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
}
其中created
是Instant
,序列化为小数(默认)。
- 在此处了解有关此模块的更多信息: 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
Spring MVC 4快速入门Maven原型得到了改进–更多Java 8功能相关推荐
- Spring MVC 4快速入门Maven原型已改进
Spring Boot使Spring入门非常容易. 但是仍然有人对不使用Spring Boot并以更经典的方式引导应用程序感兴趣. 几年前,我创建了一个原型(早于Spring Boot),简化了引导S ...
- Spring MVC 教程,快速入门,深入分析
目录 转载自:http://elf8848.iteye.com/blog/875830 资源下载: Spring_MVC_教程_快速入门_深入分析V1.1.pdf 点击打开链接 SpringMVC核 ...
- Spring MVC 教程,快速入门,深入分析【转】
2019独角兽企业重金招聘Python工程师标准>>> 转自:赵磊 地址:http://elf8848.iteye.com 目录 一.前言 二.spring mvc 核心类与接口 ...
- Spring MVC 教程,快速入门,深入分析——多视图控制器
十八.多视图控制器 当有jsp,flt (模板)等多种页面生成展示方式时,spring默认使用的是"视图解析器链". 真是一个链,所以性能不好,spring会在"视图解析 ...
- 如何:从Spring 4.0快速入门以构建简单的REST-Like API(演练)
如何:从Spring 4.0快速入门以构建简单的REST-Like API(演练) 关于使用Spring MVC创建Web API的另一篇教程. 不太复杂. 只是一个演练. 生成的应用程序将提供简单的 ...
- SpringMVC:学习笔记(1)——理解MVC及快速入门
SprigMVC-理解MVC及快速入门 说明: 传统MVC-->JSPModel2-->Front Controller + Application Controller + Page C ...
- Spring学习(1)——快速入门
Spring学习(1)--快速入门 认识 Spring 框架 Spring 框架是 Java 应用最广的框架,它的成功来源于理念,而不是技术本身,它的理念包括 IoC (Inversion of Co ...
- Spring Boot的快速入门
Spring Boot的快速入门 1.导入第一个maven项目 自动生成maven项目 2.了解maven项目结构 3.启动服务 和普通maven项目结构是一样的,值得注意的是,启动服务的入口是 ![ ...
- LayIM 3.9.1与ASP.NET SignalR实现Web聊天室快速入门(四)之ASP.NET SignalR核心功能介绍
前言 本系列文章特点:使用ASP.NET SignalR和LayIM快速入门对接,实现一对一聊天,群聊,添加聊天群组,查找聊天记录等功能.源代码不包含LayIM的源代码,因为官方并没开源属于收费资源, ...
最新文章
- 程序员春节必备金句,简直不能再机智!
- USRP E310启用SSH的X11 Forwarding功能
- 搭建MongoDB分片集群
- python批量做线性规划(每次的约束条件参数有变换)
- 用ajax技术实现无闪烁定时刷新页面
- word-vba-microsoft(中英文)
- 为什么element的el-backtop会不管用,来看这里!
- cmd oracle sys登录_oracle忘记sys/system/scott用户密码的解决方法
- 【CodeForces - 827A】String Reconstruction(并查集合并区间,思维)
- 微型计算机在工作过程中突然遇到电源中断,微型计算机在工作过程中突然遇到电源中断,则计算机 中的信息将全部丢失,再次接通电源后也不能恢复数据。...
- 微软内核工程师:ReactOS 剽窃了 Windows 研究内核代码!
- char强制类型转换为int_彻底理解Java中的基本数据类型转换(自动、强制、提升)...
- iOS开发日记9-终端命令
- python smtp发送邮件,收件人和发件人不显示问题
- w ndows7旗舰版网卡驱动,Ghost windows7 64位系统旗舰版网卡驱动工具推荐下载
- Linux(CentOS)安装MySQL教程
- Windows 更改密码策略
- HTML5 视频 Video
- linux入门指南(基础教程)
- EBOOT通过bin文件形式读取、下载LOGO
热门文章
- Oracle入门(六)之用户操作
- jps命令:查看Java进程等详细信息
- Redis入门(一)之安装
- Spring入门(二)之下载与安装
- zookeeper出现Error contacting service. It is probably not running.
- html5圆形旋转菜单js,jquery 圆形旋转图片滚动切换效果
- 进程与服务的签名_苹果app签名需要注意哪几点
- java阻塞队列小结
- 异常org.xmlpull.v1.XmlPullParserException
- spring(10)通过spring 和 JDBC征服数据库