Spring MVC 4快速入门Maven原型得到了改进–更多Java 8功能
對于所有有興趣在沒有Spring Boot的情況下快速引導(dǎo)Spring 4應(yīng)用程序的開發(fā)人員,請檢查剛剛更新的我的Spring MVC 4 Quickstart Maven原型。 原型已經(jīng)將Java 8用作目標(biāo)平臺已有一段時間了,但是不支持特定的Java 8功能。 最近的更改帶來了Thymeleaf,Jackson和JPA對Java 8 Data&Time API的支持(除了一些錯誤修復(fù))。
Thymeleaf JSR 310(Java 8日期和時間)支持
如果您碰巧使用Spring MVC和Thymeleaf,并且需要在視圖中格式化Java 8 Date&Time對象,則現(xiàn)在可以使用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是,在表達(dá)式求值期間將temporals對象作為實用程序?qū)ο筇砑拥缴舷挛摹?這意味著它可以在OGNL或SpringEL表達(dá)式評估中使用:
<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類型,必須使用外部數(shù)據(jù)類型模塊。 該模塊是jackson-datatype-jsr310 。
修改了POM并添加了新的依賴項:
<dependency><groupId>com.fasterxml.jackson.datatype</groupId><artifactId>jackson-datatype-jsr310</artifactId> </dependency>我們不需要提供版本,因為項目中使用了Spring IO平臺。 而且,如果您不知道,Spring IO Platform的主要優(yōu)勢在于它通過提供Spring項目的版本以及經(jīng)過測試并已知可以一起工作的依賴項,簡化了依賴項管理。
目前不需要其他配置,因為該模塊將由Spring自動注冊。 這是通過org.springframework.http.converter.json.Jackson2ObjectMapperBuilder完成的。
一個例子?
{"id": 2,"email": "admin","role": "ROLE_ADMIN","created": 1454017095.878 }其中created是Instant ,序列化為小數(shù)(默認(rèn))。
- 在此處了解有關(guān)此模塊的更多信息: https : //github.com/FasterXML/jackson-datatype-jsr310
JPA JSR 310(Java 8日期和時間)支持
JPA 2.1不支持將java.time類型映射為SQL有效日期或時間戳類型。 值得一提的是,它帶來了一個新的AttributeConverter接口,并且“可以使用實現(xiàn)該接口的類將實體屬性狀態(tài)轉(zhuǎn)換為數(shù)據(jù)庫列表示形式,然后再轉(zhuǎn)換回來。” 。
此類轉(zhuǎn)換器是Spring Data JPA項目的一部分,并且在Jsr310JpaConverters類中可用。 此類將新的java.time類型轉(zhuǎn)換為舊的Date類型。
通過使org.springframework.data.jpa.convert.threeten包由LocalContainerEntityManagerFactoryBean進(jìn)行掃描,可以激活轉(zhuǎn)換器:
@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類型現(xiàn)在將以TIMESTAMP形式存儲在PostgreSQL中,而不是BYTEA (因為沒有轉(zhuǎn)換器)。
在此處了解更多有關(guān)JPA 2.1和JSR 310的支持: http : //www.thoughts-on-java.org/persist-localdate-localdatetime-jpa/
在哪里找到它?
- 在GitHub上找到更新原型: https : //github.com/kolorobot/spring-mvc-quickstart-archetype
我很期待聽到可以做些什么來使其成為一個更好的項目。 如果您有想法或建議,請發(fā)表評論或提出問題。
翻譯自: https://www.javacodegeeks.com/2016/02/spring-mvc-4-quickstart-maven-archetype-improved-java-8-features.html
總結(jié)
以上是生活随笔為你收集整理的Spring MVC 4快速入门Maven原型得到了改进–更多Java 8功能的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 水泥的原料有哪些(水泥的种类有哪几种)
- 下一篇: wps让字体任意挪动(wps文字移动)