对于所有有兴趣在没有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

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

  1. Spring MVC 4快速入门Maven原型已改进

    Spring Boot使Spring入门非常容易. 但是仍然有人对不使用Spring Boot并以更经典的方式引导应用程序感兴趣. 几年前,我创建了一个原型(早于Spring Boot),简化了引导S ...

  2. Spring MVC 教程,快速入门,深入分析

    目录  转载自:http://elf8848.iteye.com/blog/875830 资源下载: Spring_MVC_教程_快速入门_深入分析V1.1.pdf 点击打开链接 SpringMVC核 ...

  3. Spring MVC 教程,快速入门,深入分析【转】

    2019独角兽企业重金招聘Python工程师标准>>> 转自:赵磊 地址:http://elf8848.iteye.com 目录  一.前言 二.spring mvc 核心类与接口 ...

  4. Spring MVC 教程,快速入门,深入分析——多视图控制器

    十八.多视图控制器 当有jsp,flt (模板)等多种页面生成展示方式时,spring默认使用的是"视图解析器链". 真是一个链,所以性能不好,spring会在"视图解析 ...

  5. 如何:从Spring 4.0快速入门以构建简单的REST-Like API(演练)

    如何:从Spring 4.0快速入门以构建简单的REST-Like API(演练) 关于使用Spring MVC创建Web API的另一篇教程. 不太复杂. 只是一个演练. 生成的应用程序将提供简单的 ...

  6. SpringMVC:学习笔记(1)——理解MVC及快速入门

    SprigMVC-理解MVC及快速入门 说明: 传统MVC-->JSPModel2-->Front Controller + Application Controller + Page C ...

  7. Spring学习(1)——快速入门

    Spring学习(1)--快速入门 认识 Spring 框架 Spring 框架是 Java 应用最广的框架,它的成功来源于理念,而不是技术本身,它的理念包括 IoC (Inversion of Co ...

  8. Spring Boot的快速入门

    Spring Boot的快速入门 1.导入第一个maven项目 自动生成maven项目 2.了解maven项目结构 3.启动服务 和普通maven项目结构是一样的,值得注意的是,启动服务的入口是 ![ ...

  9. LayIM 3.9.1与ASP.NET SignalR实现Web聊天室快速入门(四)之ASP.NET SignalR核心功能介绍

    前言 本系列文章特点:使用ASP.NET SignalR和LayIM快速入门对接,实现一对一聊天,群聊,添加聊天群组,查找聊天记录等功能.源代码不包含LayIM的源代码,因为官方并没开源属于收费资源, ...

最新文章

  1. 程序员春节必备金句,简直不能再机智!
  2. USRP E310启用SSH的X11 Forwarding功能
  3. 搭建MongoDB分片集群
  4. python批量做线性规划(每次的约束条件参数有变换)
  5. 用ajax技术实现无闪烁定时刷新页面
  6. word-vba-microsoft(中英文)
  7. 为什么element的el-backtop会不管用,来看这里!
  8. cmd oracle sys登录_oracle忘记sys/system/scott用户密码的解决方法
  9. 【CodeForces - 827A】String Reconstruction(并查集合并区间,思维)
  10. 微型计算机在工作过程中突然遇到电源中断,微型计算机在工作过程中突然遇到电源中断,则计算机 中的信息将全部丢失,再次接通电源后也不能恢复数据。...
  11. 微软内核工程师:ReactOS 剽窃了 Windows 研究内核代码!
  12. char强制类型转换为int_彻底理解Java中的基本数据类型转换(自动、强制、提升)...
  13. iOS开发日记9-终端命令
  14. python smtp发送邮件,收件人和发件人不显示问题
  15. w ndows7旗舰版网卡驱动,Ghost windows7 64位系统旗舰版网卡驱动工具推荐下载
  16. Linux(CentOS)安装MySQL教程
  17. Windows 更改密码策略
  18. HTML5 视频 Video
  19. linux入门指南(基础教程)
  20. EBOOT通过bin文件形式读取、下载LOGO

热门文章

  1. Oracle入门(六)之用户操作
  2. jps命令:查看Java进程等详细信息
  3. Redis入门(一)之安装
  4. Spring入门(二)之下载与安装
  5. zookeeper出现Error contacting service. It is probably not running.
  6. html5圆形旋转菜单js,jquery 圆形旋转图片滚动切换效果
  7. 进程与服务的签名_苹果app签名需要注意哪几点
  8. java阻塞队列小结
  9. 异常org.xmlpull.v1.XmlPullParserException
  10. spring(10)通过spring 和 JDBC征服数据库