日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

spring5新特性的介绍

發布時間:2024/4/13 编程问答 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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新特性的介绍的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。