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功能的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 水泥的原料有哪些(水泥的种类有哪几种)
- 下一篇: wps让字体任意挪动(wps文字移动)