Spring MVC 4快速入门Maven原型得到了改进–更多Java 8功能

对于所有有兴趣在没有Spring Boot的情况下快速引导Spring 4应用程序的开发人员,请检查刚刚更新的我的Spring MVC 4 Quickstart Maven原型。 原型已经将Java 8用作目标平台已有一段时间了,但是不支持特定的Java 8功能。 最近的更改带来了Thymeleaf,Jackson和JPA对Java 8 Data&Time API的支持(除了一些错误修复)。

Thymeleaf JSR 310(Java 8日期和时间)支持

如果您碰巧使用Spring MVC和Thymeleaf,并且需要在视图中格式化Java 8 Date&Time对象,则现在可以使用thymeleaf-extras-java8time –用于Java 8 Date&Time API的Thymeleaf模块。

修改了POM并添加了新的依赖项:

<dependency><groupId>org.thymeleaf.extras</groupId><artifactId>thymeleaf-extras-java8time</artifactId><version>2.1.0.RELEASE</version>
</dependency>

此外, Java8TimeDialect已添加到TemplateEngine

@Bean
public SpringTemplateEngine templateEngine() {SpringTemplateEngine templateEngine = new SpringTemplateEngine();templateEngine.setTemplateResolver(templateResolver());templateEngine.addDialect(new SpringSecurityDialect());templateEngine.addDialect(new Java8TimeDialect());return templateEngine;
}

Java8TimeDialect是,在表达式求值期间将temporals对象作为实用程序对象添加到上下文。 这意味着它可以在OGNL或SpringEL表达式评估中使用:

<div th:fragment="footer" th:align="center">© <span th:text="${#temporals.format(#temporals.createNow(), 'yyyy')}">2016</span>,<span th:text="${@environment.getProperty('app.version')}"></span>
</div>

Jackson JSR 310(Java 8日期和时间)支持

为了能够使用Jackson序列化或反序列化java.time类型,必须使用外部数据类型模块。 该模块是jackson-datatype-jsr310

修改了POM并添加了新的依赖项:

<dependency><groupId>com.fasterxml.jackson.datatype</groupId><artifactId>jackson-datatype-jsr310</artifactId>
</dependency>

我们不需要提供版本,因为项目中使用了Spring IO平台。 而且,如果您不知道,Spring IO Platform的主要优势在于它通过提供Spring项目的版本以及经过测试并已知可以一起工作的依赖项,简化了依赖项管理。

目前不需要其他配置,因为该模块将由Spring自动注册。 这是通过org.springframework.http.converter.json.Jackson2ObjectMapperBuilder完成的。

一个例子?

{"id": 2,"email": "admin","role": "ROLE_ADMIN","created": 1454017095.878
}

其中createdInstant ,序列化为小数(默认)。

  • 在此处了解有关此模块的更多信息: https : //github.com/FasterXML/jackson-datatype-jsr310

JPA JSR 310(Java 8日期和时间)支持

JPA 2.1不支持将java.time类型映射为SQL有效日期或时间戳类型。 值得一提的是,它带来了一个新的AttributeConverter接口,并且“可以使用实现该接口的类将实体属性状态转换为数据库列表示形式,然后再转换回来。”

此类转换器是Spring Data JPA项目的一部分,并且在Jsr310JpaConverters类中可用。 此类将新的java.time类型转换为旧的Date类型。

通过使org.springframework.data.jpa.convert.threeten包由LocalContainerEntityManagerFactoryBean进行扫描,可以激活转换器:

@Bean
public LocalContainerEntityManagerFactoryBean emf(DataSource dataSource) {[...]String entities = ClassUtils.getPackageName(Application.class);String converters = ClassUtils.getPackageName(Jsr310JpaConverters.class);entityManagerFactoryBean.setPackagesToScan(entities, converters);        [...]return entityManagerFactoryBean;
}

如果使用的是PostgreSQL,则java.time.Instant类型现在将以TIMESTAMP形式存储在PostgreSQL中,而不是BYTEA (因为没有转换器)。

在此处了解更多有关JPA 2.1和JSR 310的支持: http : //www.thoughts-on-java.org/persist-localdate-localdatetime-jpa/

在哪里找到它?

  • 在GitHub上找到更新原型: https : //github.com/kolorobot/spring-mvc-quickstart-archetype

我很期待听到可以做些什么来使其成为一个更好的项目。 如果您有想法或建议,请发表评论或提出问题。

翻译自: https://www.javacodegeeks.com/2016/02/spring-mvc-4-quickstart-maven-archetype-improved-java-8-features.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/354501.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python -- join()

python -- join()pythonjoinos月似当时&#xff0c;人似当时否&#xff1f;总 在 python 中&#xff0c;一共有两个 join 方法&#xff0c;一个是 str.join(),另一个是 os.path.join() &#xff0c;这里只了解前一种 str.join(iterable) 官方文档 Return a string which is the…

easymock教程_EasyMock教程–入门

easymock教程在本文中&#xff0c;我将向您展示EasyMock是什么&#xff0c;以及如何使用它来测试Java应用程序。 为此&#xff0c;我将创建一个简单的Portfolio应用程序&#xff0c;并使用JUnit&#xff06;EasyMock库对其进行测试。 在开始之前&#xff0c;让我们首先了解使用…

python 函数、面向对象

一、函数 1、定义个函数&#xff0c;可以对输入的数据进行排序&#xff0c; 通过参数来决定是正向排序还是反向排序。 number input(请输入一串数字&#xff1a;) number_list list(number) def sort_number(*args, s0): if s 0: number_map map(int,args)result sorted…

Spark数据倾斜解决方案(转)

本文转发自技术世界&#xff0c;原文链接 http://www.jasongj.com/spark/skew/ Spark性能优化之道——解决Spark数据倾斜&#xff08;Data Skew&#xff09;的N种姿势 发表于 2017-02-28 | 更新于 2017-10-17 | 本文结合实例详细阐明了Spark数据倾斜的几种场景以及对应的解…

JavaParser入门:以编程方式分析Java代码

我最喜欢的事情之一是解析代码并对其执行自动操作。 因此&#xff0c;我开始为JavaParser做出贡献&#xff0c;并创建了两个相关项目&#xff1a; java-symbol-solver和Effectivejava 。 作为JavaParser的贡献者&#xff0c;我反复阅读了一些非常类似的问题&#xff0c;这些问…

python Django基本介绍

创建Django项目并运行 实验环境&#xff1a; Ubuntu 16.04下安装好Anaconda3 Windows下安装好PyCharm 实验步骤 一、创建django工程 在Ubuntu 16.04下执行下面的命令。 &#xff08;1&#xff09;创建一个python3的虚拟环境&#xff08;如果已经创建&#xff0c;忽略此步&…

Android 热补丁动态修复框架小结

Android 热补丁动态修复框架小结转载于:https://www.cnblogs.com/zhujiabin/p/7923233.html

C语言中关于结构体的理解

在c语言中我们如果需要去表示一个学生的特征&#xff0c;例如名字年龄成绩&#xff0c;这些信息我们就需要用到结构体来描述了。 struct stu{char name[20]; //姓名int age; //年龄float score; //成绩 }; struct(结构体)&#xff1a;是由一系列具有相同类型…

GoldenGate Logdump基本使用

Logdump是GoldenGate复制软件中附带的一个工具软件&#xff0c;在OGG的目录下可以找到。这个工具主要用于分析OGG生成的队列文件&#xff0c;查找记录、统计队列文件中的数据等。 在OGG安装目录下执行logdump.exe or ./logdump即可进入命令行。 开始查找记录之前&#xff0c;先…

js 里面的键盘事件对应的键码

js 里面的键盘事件经常用到&#xff0c;所以收集了键盘事件对应的键码来分享下&#xff1a; keyCode 8 BackSpace BackSpace keyCode 9 Tab Tab keyCode 12 Clear keyCode 13 Enter keyCode 16 Shift_L keyCode 17 Control_L keyCode 18 Alt_L keyCode 19 Pause keyCo…

.bam.bai的意义_业务活动监视器(BAM)2.0带来的革命

.bam.bai的意义生产兼具精益和企业价值的中间件是一项艰巨的工作。 它要么不存在&#xff0c;要么需要创新的思维&#xff08;很多&#xff09;&#xff0c;并且需要在实现中反复进行。 业务风险很大&#xff0c;但是如果您做对了&#xff0c;它就会使您领先于其他任何公司。 这…

数据结构和算法之排序五:选择排序

我们上一篇谈到了冒泡排序&#xff0c;其实我也说了&#xff0c;这两个排序方式何其相似&#xff0c;如果掌握了冒泡排序再来进行选择排序的理解我觉得完全没有太大的问题。那么什么叫做选择排序呢&#xff1f;我们可以理解为矮子里面挑高个&#xff0c;比如说呀有一个富翁来到…

Visual Studio Code使用问题

1、打开vscode黑屏 右击vscode快捷方式–>属性–>兼容性—>兼容模式打钩 重启vscode就可以了。 2、vscode终端没有显示路径&#xff0c;不能输入 显示如下图 则关闭VS Code ,右键单击VS Code 图标&#xff0c;选择属性->兼容性&#xff0c;取消勾选 已兼容模式运…

Java社区调查结果:74%的开发人员希望减少详细程度

一个新的JDK增强建议&#xff08;JEP&#xff09;在Java社区中风起云涌&#xff1a;JEP286。该建议建议在Java的未来版本中引入局部变量类型推断&#xff0c;以简化Java应用程序的编写。 在下面的文章中&#xff0c;我们将解释它的含义以及它将如何影响您的代码。 新帖&#…

【BZOJ2300】[HAOI2011]防线修建 set维护凸包

【BZOJ2300】[HAOI2011]防线修建 Description 近来A国和B国的矛盾激化&#xff0c;为了预防不测&#xff0c;A国准备修建一条长长的防线&#xff0c;当然修建防线的话&#xff0c;肯定要把需要保护的城市修在防线内部了。可是A国上层现在还犹豫不决&#xff0c;到底该把哪些城市…

Sass笔记(CSS 的预编译语言)

在线转换&#xff1a;https://www.sass.hk/css2sass/ Sass 是一种 CSS 的预编译语言。它提供了 变量&#xff08;variables&#xff09;、嵌套&#xff08;nested rules&#xff09;、 混合&#xff08;mixins&#xff09;、 函数&#xff08;functions&#xff09;等功能。 S…

mysql 主从同步-读写分离

主从同步与读写分离测试 一、 实验环境(主从同步) Master centos 7.3 192.168.138.13 Slave centos 7.3 192.168.138.14 二、在master操作 安装并配置文件[rootlocalhost ~]# yum install mariadb-server …

coherence安装_Oracle Coherence:分布式数据管理

coherence安装本文介绍如何使用Oracle Coherence提供分布式&#xff08;分区&#xff09;数据管理。 在下面的示例应用程序中&#xff0c;创建了一个名为OTV的新集群&#xff0c;并且在该集群的两个成员之间分配了一个名为user-map的缓存对象。 二手技术&#xff1a; JDK 1.6.…

AtomicReference 原子引用

原创 2016年03月04日 13:35:2076381.简介 赋值操作不是线程安全的。若想不用锁来实现&#xff0c;可以用AtomicReference<V>这个类&#xff0c;实现对象引用的原子更新。 使用场景&#xff1a;一个线程使用student对象&#xff0c;另一个线程负责定时读表&#xff0c;更新…

MongoDB基础使用

5.MongoDB基础使用 5.1.常用的命令&#xff08;重点&#xff09; > Help 查看帮助 显示数据库列表 > show dbs 创建数据库 > use dbname 如果数据库不存在&#xff0c;则创建数据库dbname&#xff0c;否则切换到指定数据库dbname。创建的数据库并不在数据库的列表中…