真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

簡(jiǎn)單了解SpringFramework5.0新特性

SpringFramework5.0是自2013年12月版本4發(fā)布之后SpringFramework的第一個(gè)主發(fā)行版。SpringFramework項(xiàng)目的領(lǐng)導(dǎo)人JuergenHoeller于2016年7月28日宣布了第一個(gè)SpringFramework5.0里程碑版本(5.0M1)。

站在用戶的角度思考問(wèn)題,與客戶深入溝通,找到夏縣網(wǎng)站設(shè)計(jì)與夏縣網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶體驗(yàn)好的作品,建站類型包括:網(wǎng)站設(shè)計(jì)制作、成都網(wǎng)站設(shè)計(jì)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、域名注冊(cè)、虛擬空間、企業(yè)郵箱。業(yè)務(wù)覆蓋夏縣地區(qū)。

現(xiàn)在,將近一年的時(shí)間過(guò)去以后,我們期盼已久的RC3版本將于2017年7月18日發(fā)行。這是路線圖規(guī)劃中SpringFramework5.0首個(gè)GA發(fā)行版的最后一次發(fā)行。

從高層來(lái)看,SpringFramework5.0的功能可以分為:

JDK基線更新

核心框架修正

核心容器更新

含Kotlin在內(nèi)的函數(shù)式編程

響應(yīng)式編程模型

測(cè)試改進(jìn)

庫(kù)支持

中止支持

SpringFramework5.0的JDK基線更新

整個(gè)Springframework5.0代碼庫(kù)運(yùn)行于Java8之上。因此SpringFramework5.0對(duì)環(huán)境的最低要就就是Java8。

這一點(diǎn)實(shí)際上對(duì)框架而言非常重要。而作為開(kāi)發(fā)者的我們而言,則已經(jīng)能夠去藉此來(lái)享受到現(xiàn)代Java發(fā)行版中的所有新特性了。而框架版本還背負(fù)這支持已經(jīng)不被建議使用的Java發(fā)行版的任務(wù)。

現(xiàn)在,框架的最低要求是Java8.

SpringFramework5.0原來(lái)是計(jì)劃在Java9之上發(fā)行的。然后,在基于Java9的發(fā)行版運(yùn)作了超過(guò)18個(gè)月之后,Spring團(tuán)隊(duì)決定將SpringFramework5.0發(fā)行版同Java9的綁定關(guān)系解除。

不過(guò),在Java9發(fā)布的時(shí)候(計(jì)劃是2017年9月份),SpringFramework5.0會(huì)準(zhǔn)備好的。

核心框架修訂

核心的SpringFramework5.0已經(jīng)利用Java8所引入的新特性進(jìn)行了修訂。比較關(guān)鍵的一些如下:

基于Java8的反射增強(qiáng),SpringFramework5.0中的方法參數(shù)可以更加高效的進(jìn)行訪問(wèn)。

核心的Spring接口現(xiàn)在提供基于Java8的默認(rèn)方法構(gòu)建的選擇性聲明。

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

在日志記錄方面,SpringFramework5.0帶來(lái)了CommonsLogging橋接模塊的封裝,它被叫做spring-jcl而不是標(biāo)準(zhǔn)的CommonsLogging。當(dāng)然,無(wú)需任何額外的橋接,新版本也會(huì)對(duì)Log4j2.x,SLF4J,JUL(java.util.logging)進(jìn)行自動(dòng)檢測(cè)。

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

核心容器更新

SpringFramework5.0現(xiàn)在支持候選組件索引作為類路徑掃描的替代方案。該功能已經(jīng)在類路徑掃描器中添加,以簡(jiǎn)化添加候選組件標(biāo)識(shí)的步驟。

應(yīng)用程序構(gòu)建任務(wù)可以定義當(dāng)前項(xiàng)目自己的META-INF/spring.components文件。在編譯時(shí),源模型是自包含的,JPA實(shí)體和Spring組件是已被標(biāo)記的。

從索引讀取實(shí)體而不是掃描類路徑對(duì)于小于200個(gè)類的小型項(xiàng)目是沒(méi)有明顯差異。但對(duì)大型項(xiàng)目影響較大。加載組件索引開(kāi)銷更低。因此,隨著類數(shù)的增加,索引讀取的啟動(dòng)時(shí)間將保持不變。

加載組件索引的耗費(fèi)是廉價(jià)的。因此當(dāng)類的數(shù)量不斷增長(zhǎng),加上構(gòu)建索引的啟動(dòng)時(shí)間仍然可以維持一個(gè)常數(shù),不過(guò)對(duì)于組件掃描而言,啟動(dòng)時(shí)間則會(huì)有明顯的增長(zhǎng)。

這個(gè)對(duì)于我們處于大型Spring項(xiàng)目的開(kāi)發(fā)者所意味著的,是應(yīng)用程序的啟動(dòng)時(shí)間將被大大縮減。雖然20或者30秒鐘看似沒(méi)什么,但如果每天要這樣登上好幾百次,加起來(lái)就夠你受的了。使用了組件索引的話,就能幫助你每天過(guò)的更加高效。

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

@Nullable注解現(xiàn)在也可以被用來(lái)作為可選注入項(xiàng)的指示器。@Nullable為對(duì)象使用方規(guī)定了一項(xiàng)義務(wù),就是它們必須準(zhǔn)備以為取值為null的值。在此次發(fā)布之前,實(shí)現(xiàn)這件事情的唯一方法就是通過(guò)Android的Nullable,CheckerFramework的Nullable,以及JSR305的Nullable。

發(fā)行說(shuō)明中的其他一些新功能和增強(qiáng)功能包括:

在GenericApplicationContext和AnnotationConfigApplicationContext中實(shí)現(xiàn)函數(shù)式編程風(fēng)格。

對(duì)接口方法的事務(wù)、緩存和異步注釋的一致性檢測(cè)。

將XML配置命名空間簡(jiǎn)化為無(wú)版本化的模式。

使用Kotlin進(jìn)行函數(shù)式編程

SpringFramework5.0引入了對(duì)JetBrainsKotlin語(yǔ)言的支持。Kotlin是一種支持函數(shù)式編程編程風(fēng)格的面向?qū)ο笳Z(yǔ)言。Kotlin運(yùn)行在JVM之上,但運(yùn)行環(huán)境并不限于JVM。

有了對(duì)Kotlin的支持,開(kāi)發(fā)者可以進(jìn)行深度的函數(shù)式Spring編程,特別是在函數(shù)式Web端點(diǎn)以及Bean注冊(cè)這些方面。

在SpringFramework5.0中,你可以為WEB的函數(shù)式API編寫(xiě)干凈且地道的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)
	}
}

對(duì)于 Bean 的注冊(cè),作為 XML 或者 @Configuration 以及 @Bean 的替代辦法, 現(xiàn)在你可以使用 Kotlin 來(lái)注冊(cè) Spring Bean了,就像下面這樣:

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

響應(yīng)式編程模型

此次Spring發(fā)行版本的一個(gè)激動(dòng)人心的特性就是新的響應(yīng)式堆棧WEB框架。這個(gè)堆棧完全的響應(yīng)式且非阻塞,適合于事件循環(huán)風(fēng)格的處理,可以進(jìn)行少量線程的擴(kuò)展。

ReactiveStreams是來(lái)自于Netflix,Pivotal,Typesafe,RedHat,Oracle,Twitter以及Spray.io的工程師特地開(kāi)發(fā)的一個(gè)API。它為響應(yīng)式編程實(shí)現(xiàn)的實(shí)現(xiàn)提供一個(gè)公共的API,好實(shí)現(xiàn)Hibernate的JPA。這里JPA就是這個(gè)API,而Hibernate就是實(shí)現(xiàn)。

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

SpringFramework5.0對(duì)于流式處理的支持依賴于ProjectReactor來(lái)構(gòu)建,其專門實(shí)現(xiàn)了ReactiveStreamsAPI。

SpringFramework5.0擁有一個(gè)新的spring-webflux模塊,支持響應(yīng)式HTTP和WebSocket客戶端。SpringFramework5.0還提供了對(duì)于運(yùn)行于服務(wù)器之上,包含了REST,HTML,以及WebSocket風(fēng)格交互的響應(yīng)式網(wǎng)頁(yè)應(yīng)用程序的支持。

在spring-webflux中包含了兩種獨(dú)立的服務(wù)端編程模型:

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

使用Java8lambda表達(dá)式的函數(shù)式風(fēng)格的路由和處理。

有了SpringWebflux,你現(xiàn)在可以創(chuàng)建出WebClient,它是響應(yīng)式且非阻塞的,可以作為RestTemplate的一個(gè)替代方案。

這里有一個(gè)使用Spring5.0的REST端點(diǎn)的WebClient實(shí)現(xiàn):

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模塊給我么帶來(lái)了激動(dòng)人心的新能力,傳統(tǒng)的SpringMVC在SpringFramework5.0仍然得到了完整的支持。

測(cè)試方面的提升

SpringFramework5.0完全支持JUnit5Jupiter,所以可以使用JUnit5來(lái)編寫(xiě)測(cè)試以及擴(kuò)展。此外還提供了一個(gè)編程以及擴(kuò)展模型,Jupiter子項(xiàng)目提供了一個(gè)測(cè)試引擎來(lái)在Spring上運(yùn)行基于Jupiter的測(cè)試。

另外,SpringFramework5還提供了在SpringTestContextFramework中進(jìn)行并行測(cè)試的擴(kuò)展。

針對(duì)響應(yīng)式編程模型,spring-test現(xiàn)在還引入了支持SpringWebFlux的WebTestClient集成測(cè)試的支持,類似于MockMvc,并不需要一個(gè)運(yùn)行著的服務(wù)端。使用一個(gè)模擬的請(qǐng)求或者響應(yīng),WebTestClient就可以直接綁定到WebFlux服務(wù)端設(shè)施。

你可以在這里找到這個(gè)激動(dòng)人心的TestContext框架所帶來(lái)的增強(qiáng)功能的完整列表。

當(dāng)然,SpringFramework5.0仍然支持我們的老朋友JUnit!在我寫(xiě)這篇文章的時(shí)候,JUnit5還只是發(fā)展到了GA版本。對(duì)于JUnit4,SpringFramework在未來(lái)還是要支持一段時(shí)間的。

庫(kù)支持

SpringFramework5.0目前支持以下升級(jí)庫(kù)的版本:

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同時(shí)也停止了對(duì)以下庫(kù)的支持:

Portlet.

Velocity.

JasperReports.

XMLBeans.

JDO.

Guava.

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

結(jié)語(yǔ)

SpringFramework5.0的亮點(diǎn)絕對(duì)是響應(yīng)式編程,這是一個(gè)重要的范式轉(zhuǎn)變。你可以將SpringFramework5.0作為響應(yīng)式程序的基礎(chǔ)版本。對(duì)于2017年及以后的剩余時(shí)間里,你可以期待看到子項(xiàng)目實(shí)現(xiàn)響應(yīng)式特性。你將看到即將發(fā)布的SpringData、SpringSecurity、SpringIntegration等版本所提供的響應(yīng)式編程功能。

SpringData團(tuán)隊(duì)已經(jīng)為MongoDB和redis實(shí)現(xiàn)了響應(yīng)式支持。

使用JDBC獲取響應(yīng)式支持還為時(shí)過(guò)早。JDBC規(guī)范本身就是阻塞的,在傳統(tǒng)的JDBC數(shù)據(jù)庫(kù)中看到響應(yīng)式編程的還需要一段時(shí)間。

雖然響應(yīng)式編程是SpringFramework5.0中的閃光點(diǎn),但它不會(huì)在任何地方得到支持。下游技術(shù)需要提供響應(yīng)式支持。

隨著響應(yīng)式編程越來(lái)越受歡迎,我們可以期待越來(lái)越多的技術(shù)將實(shí)現(xiàn)響應(yīng)式解決方案。當(dāng)然,我們可以期待Spring框架隨著其他的響應(yīng)式編程方案的使用而發(fā)展

以上就是本文關(guān)于簡(jiǎn)單了解Spring Framework5.0新特性的全部?jī)?nèi)容,希望對(duì)大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站:

Spring中利用配置文件和@value注入屬性值代碼詳解

Spring集成Redis詳解代碼示例

Spring AOP攔截-三種方式實(shí)現(xiàn)自動(dòng)代理詳解

如有不足之處,歡迎留言指出。

springframework.jar包 官方免費(fèi)版


文章名稱:簡(jiǎn)單了解SpringFramework5.0新特性
分享URL:http://weahome.cn/article/gcdeso.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部