spring5新特性的介绍
Spring5的新特性
與JDK相關的升級
jdk版本要求:
spring5.0在2017年9月發布了它的GA(通用)版本。該版本是基于jdk8編寫的,所以jdk8以下版本將無法使用。同時,可以兼容jdk9版本。
tomcat版本要求8.5及以上。
注:
我們使用jdk8構建工程,可以降版編譯。但是不能使用jdk8以下版本構建工程。
由于jdk和tomcat版本的更新,我們的IDE也需要同時更新。(目前使用的eclipse 4.7.2)
利用jdk8版本更新的內容
第一:基于JDK8的反射增強
請看下面的代碼:
package com.learn.test;import java.lang.reflect.Method;/*** * @author 黑馬程序員* @Company http://www.ithiema.com* @Version 1.0*/ public class Test {//循環次數定義:10億次private static final int loopCnt = 1000 * 1000 * 1000;public static void main(String[] args) throws Exception {//輸出jdk的版本System.out.println("java.version=" + System.getProperty("java.version"));t1();t2();t3();}// 每次重新生成對象public static void t1() {long s = System.currentTimeMillis();for (int i = 0; i < loopCnt; i++) {Person p = new Person();p.setAge(31);}long e = System.currentTimeMillis();System.out.println("循環10億次創建對象的時間:" + (e - s));}// 同一個對象public static void t2() {long s = System.currentTimeMillis();Person p = new Person();for (int i = 0; i < loopCnt; i++) {p.setAge(32);}long e = System.currentTimeMillis();System.out.println("循環10億次給同一對象賦值的時間: " + (e - s));}//使用反射創建對象public static void t3() throws Exception {long s = System.currentTimeMillis();Class<Person> c = Person.class;Person p = c.newInstance();Method m = c.getMethod("setAge", Integer.class);for (int i = 0; i < loopCnt; i++) {m.invoke(p, 33);}long e = System.currentTimeMillis();System.out.println("循環10億次反射創建對象的時間:" + (e - s));}static class Person {private int age = 20;public int getAge() {return age;}public void setAge(Integer age) {this.age = age;}} }有此我們可以看出,在反射創建對象上,jdk8確實做了加強。
第二:@NonNull注解和@Nullable注解的使用
用 @Nullable 和 @NotNull 注解來顯示表明可為空的參數和以及返回值。這樣就夠在編譯的時候處理空值而不是在運行時拋出 NullPointerExceptions。
第三:日志記錄方面
Spring Framework 5.0 帶來了 Commons Logging 橋接模塊的封裝, 它被叫做 spring-jcl 而不是標準的 Commons Logging。當然,無需任何額外的橋接,新版本也會對 Log4j 2.x, SLF4J, JUL ( java.util.logging) 進行自動檢測。
核心容器的更新
Spring Framework 5.0 現在支持候選組件索引作為類路徑掃描的替代方案。該功能已經在類路徑掃描器中添加,以簡化添加候選組件標識的步驟。
應用程序構建任務可以定義當前項目自己的 META-INF/spring.components 文件。在編譯時,源模型是自包含的,JPA 實體和 Spring 組件是已被標記的。
從索引讀取實體而不是掃描類路徑對于小于 200 個類的小型項目是沒有明顯差異。但對大型項目影響較大。加載組件索引開銷更低。因此,隨著類數的增加,索引讀取的啟動時間將保持不變。
JetBrains Kotlin語言支持
Kolin概述:是一種支持函數式編程編程風格的面向對象語言。Kotlin 運行在 JVM 之上,但運行環境并不限于 JVM。
響應式編程風格
此次 Spring 發行版本的一個激動人心的特性就是新的響應式堆棧 WEB 框架。這個堆棧完全的響應式且非阻塞,適合于事件循環風格的處理,可以進行少量線程的擴展。
Reactive Streams 是來自于 Netflix, Pivotal, Typesafe, Red Hat, Oracle, Twitter 以及 Spray.io 的工程師特地開發的一個 API。它為響應式編程實現的實現提供一個公共的 API,好實現 Hibernate 的 JPA。這里 JPA 就是這個 API, 而 Hibernate 就是實現。
Junit5支持
Spring Framework 5.0 仍然支持我們的老朋友 JUnit! 在我寫這篇文章的時候, JUnit 5 還只是發展到了 GA 版本。對于 JUnit4, Spring Framework 在未來還是要支持一段時間的。
依賴類庫的更新
Portlet. Velocity. JasperReports. XMLBeans. JDO. Guava.
支持的類庫
Jackson 2.6+ EhCache 2.10+ / 3.0 GA Hibernate 5.0+ JDBC 4.0+ XmlUnit 2.x+ OkHttp 3.x+ Netty 4.1+
?
?
總結
以上是生活随笔為你收集整理的spring5新特性的介绍的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: spring编程式事务控制
- 下一篇: Hadoop的介绍