亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > Java > 正文

簡單了解Spring Framework5.0新特性

2024-07-13 10:13:51
字體:
來源:轉載
供稿:網友

SpringFramework5.0是自2013年12月版本4發布之后SpringFramework的第一個主發行版。SpringFramework項目的領導人JuergenHoeller于2016年7月28日宣布了第一個SpringFramework5.0里程碑版本(5.0M1)。

現在,將近一年的時間過去以后,我們期盼已久的RC3版本將于2017年7月18日發行。這是路線圖規劃中SpringFramework5.0首個GA發行版的最后一次發行。

從高層來看,SpringFramework5.0的功能可以分為:

JDK基線更新

核心框架修正

核心容器更新

含Kotlin在內的函數式編程

響應式編程模型

測試改進

庫支持

中止支持

SpringFramework5.0的JDK基線更新

整個Springframework5.0代碼庫運行于Java8之上。因此SpringFramework5.0對環境的最低要就就是Java8。

這一點實際上對框架而言非常重要。而作為開發者的我們而言,則已經能夠去藉此來享受到現代Java發行版中的所有新特性了。而框架版本還背負這支持已經不被建議使用的Java發行版的任務。

現在,框架的最低要求是Java8.

SpringFramework5.0原來是計劃在Java9之上發行的。然后,在基于Java9的發行版運作了超過18個月之后,Spring團隊決定將SpringFramework5.0發行版同Java9的綁定關系解除。

不過,在Java9發布的時候(計劃是2017年9月份),SpringFramework5.0會準備好的。

核心框架修訂

核心的SpringFramework5.0已經利用Java8所引入的新特性進行了修訂。比較關鍵的一些如下:

基于Java8的反射增強,SpringFramework5.0中的方法參數可以更加高效的進行訪問。

核心的Spring接口現在提供基于Java8的默認方法構建的選擇性聲明。

用@Nullable和@NotNull注解來顯示表明可為空的參數和以及返回值。這樣就夠在編譯的時候處理空值而不是在運行時拋出NullPointerExceptions。

在日志記錄方面,SpringFramework5.0帶來了CommonsLogging橋接模塊的封裝,它被叫做spring-jcl而不是標準的CommonsLogging。當然,無需任何額外的橋接,新版本也會對Log4j2.x,SLF4J,JUL(java.util.logging)進行自動檢測。

有了Resourse抽象所提供的isFile指示器以及getFile方法,防御式編程方法也得到了框架的推動。

核心容器更新

SpringFramework5.0現在支持候選組件索引作為類路徑掃描的替代方案。該功能已經在類路徑掃描器中添加,以簡化添加候選組件標識的步驟。

應用程序構建任務可以定義當前項目自己的META-INF/spring.components文件。在編譯時,源模型是自包含的,JPA實體和Spring組件是已被標記的。

從索引讀取實體而不是掃描類路徑對于小于200個類的小型項目是沒有明顯差異。但對大型項目影響較大。加載組件索引開銷更低。因此,隨著類數的增加,索引讀取的啟動時間將保持不變。

加載組件索引的耗費是廉價的。因此當類的數量不斷增長,加上構建索引的啟動時間仍然可以維持一個常數,不過對于組件掃描而言,啟動時間則會有明顯的增長。

這個對于我們處于大型Spring項目的開發者所意味著的,是應用程序的啟動時間將被大大縮減。雖然20或者30秒鐘看似沒什么,但如果每天要這樣登上好幾百次,加起來就夠你受的了。使用了組件索引的話,就能幫助你每天過的更加高效。

你可以在Spring的Jira上了解更多關于組件索引的相關信息。

@Nullable注解現在也可以被用來作為可選注入項的指示器。@Nullable為對象使用方規定了一項義務,就是它們必須準備以為取值為null的值。在此次發布之前,實現這件事情的唯一方法就是通過Android的Nullable,CheckerFramework的Nullable,以及JSR305的Nullable。

發行說明中的其他一些新功能和增強功能包括:

在GenericApplicationContext和AnnotationConfigApplicationContext中實現函數式編程風格。

對接口方法的事務、緩存和異步注釋的一致性檢測。

將XML配置命名空間簡化為無版本化的模式。

使用Kotlin進行函數式編程

SpringFramework5.0引入了對JetBrainsKotlin語言的支持。Kotlin是一種支持函數式編程編程風格的面向對象語言。Kotlin運行在JVM之上,但運行環境并不限于JVM。

有了對Kotlin的支持,開發者可以進行深度的函數式Spring編程,特別是在函數式Web端點以及Bean注冊這些方面。

在SpringFramework5.0中,你可以為WEB的函數式API編寫干凈且地道的Kotlin代碼,就像下面這樣:

{	("/movie" and accept(TEXT_HTML)).nest {		GET("/", movieHandler::findAllView)		GET("/{card}", movieHandler::findOneView)	}	("/api/movie" and accept(APPLICATION_JSON)).nest {		GET("/", movieApiHandler::findAll)		GET("/{id}", movieApiHandler::findOne)	}}

對于 Bean 的注冊,作為 XML 或者 @Configuration 以及 @Bean 的替代辦法, 現在你可以使用 Kotlin 來注冊 Spring Bean了,就像下面這樣:

val context = GenericApplicationContext {registerBean()registerBean {	Cinema(it.getBean())}}

響應式編程模型

此次Spring發行版本的一個激動人心的特性就是新的響應式堆棧WEB框架。這個堆棧完全的響應式且非阻塞,適合于事件循環風格的處理,可以進行少量線程的擴展。

ReactiveStreams是來自于Netflix,Pivotal,Typesafe,RedHat,Oracle,Twitter以及Spray.io的工程師特地開發的一個API。它為響應式編程實現的實現提供一個公共的API,好實現Hibernate的JPA。這里JPA就是這個API,而Hibernate就是實現。

ReactiveStreamsAPI是Java9的官方版本的一部分。在Java8中,你會需要專門引入依賴來使用ReactiveStreamsAPI。

SpringFramework5.0對于流式處理的支持依賴于ProjectReactor來構建,其專門實現了ReactiveStreamsAPI。

SpringFramework5.0擁有一個新的spring-webflux模塊,支持響應式HTTP和WebSocket客戶端。SpringFramework5.0還提供了對于運行于服務器之上,包含了REST,HTML,以及WebSocket風格交互的響應式網頁應用程序的支持。

在spring-webflux中包含了兩種獨立的服務端編程模型:

基于注解:使用到了@Controller以及SpringMVC的其它一些注解;

使用Java8lambda表達式的函數式風格的路由和處理。

有了SpringWebflux,你現在可以創建出WebClient,它是響應式且非阻塞的,可以作為RestTemplate的一個替代方案。

這里有一個使用Spring5.0的REST端點的WebClient實現:

WebClient webClient = WebClient.create();Mono person = webClient.get().uri("http://localhost:8080/movie/42").accept(MediaType.APPLICATION_JSON).exchange().then(response -> response.bodyToMono(Movie.class));

盡管新的WebFlux模塊給我么帶來了激動人心的新能力,傳統的SpringMVC在SpringFramework5.0仍然得到了完整的支持。

測試方面的提升

SpringFramework5.0完全支持JUnit5Jupiter,所以可以使用JUnit5來編寫測試以及擴展。此外還提供了一個編程以及擴展模型,Jupiter子項目提供了一個測試引擎來在Spring上運行基于Jupiter的測試。

另外,SpringFramework5還提供了在SpringTestContextFramework中進行并行測試的擴展。

針對響應式編程模型,spring-test現在還引入了支持SpringWebFlux的WebTestClient集成測試的支持,類似于MockMvc,并不需要一個運行著的服務端。使用一個模擬的請求或者響應,WebTestClient就可以直接綁定到WebFlux服務端設施。

你可以在這里找到這個激動人心的TestContext框架所帶來的增強功能的完整列表。

當然,SpringFramework5.0仍然支持我們的老朋友JUnit!在我寫這篇文章的時候,JUnit5還只是發展到了GA版本。對于JUnit4,SpringFramework在未來還是要支持一段時間的。

庫支持

SpringFramework5.0目前支持以下升級庫的版本:

Jackson2.6+

EhCache2.10+/3.0GA

Hibernate5.0+

JDBC4.0+

XmlUnit2.x+

OkHttp3.x+

Netty4.1+

中止的支持

在API層面,SpringFramework5.0不再支持以下包:

beans.factory.access

jdbc.support.nativejdbc

spring-aspects模塊的mock.staticmock

web.view.tiles2M.(最低要求Tiles3)

orm.hibernate3和orm.hibernate4.目前Hibernate5是支持的框架。

SpringFramework5.0同時也停止了對以下庫的支持:

Portlet.

Velocity.

JasperReports.

XMLBeans.

JDO.

Guava.

如果你正在使用任何上面的包,建議你將SpringFramework版本維持在4.3.x。

結語

SpringFramework5.0的亮點絕對是響應式編程,這是一個重要的范式轉變。你可以將SpringFramework5.0作為響應式程序的基礎版本。對于2017年及以后的剩余時間里,你可以期待看到子項目實現響應式特性。你將看到即將發布的SpringData、SpringSecurity、SpringIntegration等版本所提供的響應式編程功能。

SpringData團隊已經為MongoDB和Redis實現了響應式支持。

使用JDBC獲取響應式支持還為時過早。JDBC規范本身就是阻塞的,在傳統的JDBC數據庫中看到響應式編程的還需要一段時間。

雖然響應式編程是SpringFramework5.0中的閃光點,但它不會在任何地方得到支持。下游技術需要提供響應式支持。

隨著響應式編程越來越受歡迎,我們可以期待越來越多的技術將實現響應式解決方案。當然,我們可以期待Spring框架隨著其他的響應式編程方案的使用而發展

以上就是本文關于簡單了解Spring Framework5.0新特性的全部內容,希望對大家有所幫助。


注:相關教程知識閱讀請移步到JAVA教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
57pao成人国产永久免费| 中文字幕欧美精品在线| 国产97在线观看| 国产精品成人v| 国产在线精品播放| 在线播放日韩精品| 欧美丰满片xxx777| 91精品国产色综合久久不卡98| 日韩在线视频免费观看高清中文| 精品一区二区三区四区| 亚洲免费视频一区二区| 亚洲九九九在线观看| 正在播放国产一区| 91禁外国网站| 欧美精品免费在线| 成人福利免费观看| 国外成人在线视频| 亚洲精品资源在线| 久久久中精品2020中文| 亚洲一区二区三区sesese| 国产欧美亚洲精品| 俺去亚洲欧洲欧美日韩| 91色视频在线导航| 欧美亚洲国产视频| 中文字幕国产日韩| 日韩精品欧美国产精品忘忧草| 91精品视频免费看| 欧美日韩亚洲高清| 97婷婷涩涩精品一区| 国产999视频| 福利精品视频在线| 亚洲综合中文字幕68页| 亚洲成人亚洲激情| 日韩在线一区二区三区免费视频| 久久91亚洲精品中文字幕| 成人激情电影一区二区| 黑人狂躁日本妞一区二区三区| 精品久久久一区二区| 日韩精品在线观看视频| 国产中文日韩欧美| 欧美不卡视频一区发布| 欧洲亚洲免费视频| 国产视频亚洲精品| 亚洲国产精品久久| 91精品在线观| 亚洲精品国产精品乱码不99按摩| 91国偷自产一区二区三区的观看方式| 国产香蕉精品视频一区二区三区| 最近2019年手机中文字幕| 欧美亚洲午夜视频在线观看| 欧美专区在线观看| 久久成人在线视频| 成人精品久久久| 国产精品入口日韩视频大尺度| 国产成人精品最新| 国产午夜精品全部视频在线播放| 中文字幕亚洲一区| 日韩专区在线播放| 国产精品视频一| 97色在线视频观看| 欧美精品18videosex性欧美| 欧美一区二区三区免费观看| 在线观看视频亚洲| 麻豆国产va免费精品高清在线| 欧美日韩激情美女| 国内精品伊人久久| 欧美大尺度电影在线观看| 17婷婷久久www| 成人免费黄色网| 中文字幕精品久久| 色爱av美腿丝袜综合粉嫩av| 国产精品免费观看在线| 日本最新高清不卡中文字幕| 久热精品视频在线观看一区| 91视频国产精品| 国产精品日韩在线观看| 欧美日韩亚洲一区二区三区| 4k岛国日韩精品**专区| 国产一区二区丝袜高跟鞋图片| 欧美电影免费播放| 亚洲一区二区三区四区视频| 亚洲三级 欧美三级| 91超碰caoporn97人人| 成人av电影天堂| 欧美午夜激情小视频| 伊人久久久久久久久久| 欧美久久精品一级黑人c片| 久久久久这里只有精品| 日本午夜精品理论片a级appf发布| 中文字幕亚洲一区二区三区五十路| 亚洲欧美国产制服动漫| 欧美精品做受xxx性少妇| 神马久久久久久| 欧美日韩成人在线播放| www.国产精品一二区| 亚洲性生活视频在线观看| 亚洲欧美在线一区二区| 欧美大胆在线视频| 欧美激情国产日韩精品一区18| 日韩免费av一区二区| 日韩av综合网站| 中文字幕精品网| 亚洲精品suv精品一区二区| 亚洲性日韩精品一区二区| 国产精品综合网站| 97视频免费在线看| 欧美壮男野外gaytube| 色悠久久久久综合先锋影音下载| 欧美日韩久久久久| 奇门遁甲1982国语版免费观看高清| 91在线免费观看网站| 亚洲精品98久久久久久中文字幕| 国产剧情久久久久久| 91高清免费视频| 日韩在线视频一区| 欧日韩在线观看| 久久在线免费视频| 欧美资源在线观看| 欧美一级在线亚洲天堂| 国产午夜精品视频免费不卡69堂| 亚洲国产精品专区久久| 精品呦交小u女在线| 欧美xxxx14xxxxx性爽| 久久夜色精品亚洲噜噜国产mv| 亚洲一区二区三| 国产人妖伪娘一区91| 国产精品美腿一区在线看| 亚洲福利视频网站| 精品久久久久久久久久国产| 国模精品一区二区三区色天香| 亚洲高清免费观看高清完整版| 国产成人91久久精品| 丝袜一区二区三区| 欧美野外猛男的大粗鳮| 91在线免费观看网站| 亚洲aa在线观看| 中文字幕亚洲二区| 中文字幕日韩精品在线| 国产精品一区二区女厕厕| 欧美国产日韩二区| 国产日韩换脸av一区在线观看| 日韩一区二区三区国产| 亚洲xxxx视频| 亚洲欧美国产制服动漫| 日韩毛片在线观看| 高潮白浆女日韩av免费看| 一区二区欧美激情| 国产视频精品一区二区三区| 亚洲国产成人久久综合| 亚洲精品suv精品一区二区| 亚洲专区国产精品| 亚洲第一福利在线观看| 亚洲人成欧美中文字幕| 亚洲黄色www| 久久6精品影院| 久久亚洲精品毛片| 成人美女免费网站视频| 另类美女黄大片| 色妞在线综合亚洲欧美| 69视频在线免费观看| 精品亚洲一区二区| 久久天天躁狠狠躁老女人| 国产精品露脸自拍| 秋霞成人午夜鲁丝一区二区三区|