這樣回答了Spring 5的新特性,面試官對你刮目相看


前言:

最近,有一個小伙伴成功獲得好幾份不錯的offer,和他交談的過程中得知面試官問他關(guān)于Spring的問題比較多,其中最讓面試官滿意的就是自己回答關(guān)于Spring 5的知識點回答的不錯。

Spring5于2017年9月發(fā)布了通用版本,它是自2013年12月以來第一個主要的Spring版本。它提供了一些人們期待已久的改進,還采用了一種全新的編程范例,以反應(yīng)式原則為基礎(chǔ)。

這個版本是很長時間以來最令人激動的版本。Spring 5兼容Java?8和JDK 9,它集成了反應(yīng)式流,以方便后續(xù)提供一種顛覆性方法來實現(xiàn)端點和Web應(yīng)用程序開發(fā)。

當(dāng)然,反應(yīng)式編程不僅是此版本的主題,還是令許多程序員激動不已的重大特性。人們對能夠針對負載波動進行無縫擴展的容災(zāi)和響應(yīng)式服務(wù)的需求在不斷增加,Spring 5很好地滿足了這一需求。


和小伙伴的交談中,他講述了自己怎么向面試官回答Spring5新特性方面的問題,我也進行了總結(jié),下面分享給大家:

一:升級到Java SE 8和Java EE 7:

以前的Spring一直在支持一些棄用的Java版本,而Spring 5已從“舊包袱”中解放出來。為了充分利用Java 8的特性,它的代碼庫已進行了改進,而且要求將Java 8作為最低的JDK版本。

Spring 5在類路徑(和模塊路徑)上完全兼容Java 9,而且它通過了JDK 9測試套件的測試。對Java 9愛好者而言,這是一個好消息。

在API級別上,Spring 5兼容Java EE 8技術(shù),滿足對Servlet 4.0、Bean Validation 2.0和全新的JSON Binding API的需求。對Java EE API的最低要求為V7,該版本引入了針對Servlet、JPA和Bean Validation API的次要版本。

二:反應(yīng)式編程模型:

Spring 5最令人興奮的新特性是它的反應(yīng)式編程模型。Spring 5基于一種反應(yīng)式基礎(chǔ)而構(gòu)建,而且是完全異步和非阻塞的。只需少量的線程,新的事件循環(huán)執(zhí)行模型就可以垂直擴展。

Spring 5采用反應(yīng)式流來提供在反應(yīng)式組件中傳播負壓的機制。負壓是一個確保來自多個生產(chǎn)者的數(shù)據(jù)不會讓使用者不堪重負的概念。

Spring WebFlux是Spring 5的反應(yīng)式核心,它為開發(fā)人員提供了兩種為Spring Web編程而設(shè)計的編程模型:基于注解的模型和Functional WebFramework(WebFlux.fn)。

基于注解的模型是Spring Web MVC的現(xiàn)代替代方案,該模型基于反應(yīng)式基礎(chǔ)而構(gòu)建,而Functional Web Framework是基于@Controller注解的編程模型的替代方案。這些模型都通過同一種反應(yīng)式規(guī)則來運行,后者調(diào)整非阻塞HTTP來適應(yīng)反應(yīng)式流API。

三:使用注解進行編程:

Web MVC程序員應(yīng)該對Spring 5的基于注解的編程模型非常熟悉,Spring 5調(diào)整了Web MVC的@Controller編程模型,采用了相同的注解。

在下面的代碼中BookController類提供了兩個方法,分別響應(yīng)針對某個圖書列表的HTTP請求,以及針對具有給定id的圖書的HTTP請求。請注意Mono和Flux等對象。這些對象是實現(xiàn)反應(yīng)式流規(guī)范中的Publisher接口的反應(yīng)式類型,它們的職責(zé)是處理數(shù)據(jù)流。Mono對象處理一個僅含1個元素的流,而Flux表示一個包含N個元素的流。


四:包清理和棄用:

Spring5終止了對一些過時API的支持。遭此厄運的有Hibernate 3和Hibernate 4,為了支持Hibernate 5,它們遭到了棄用。另外,對Portlet、Velocity、JasperReports、XMLBeans、JDO和Guava的支持也已終止。

包級別上的清理工作仍在繼續(xù)。Spring 5不再支持beans.factory.access、jdbc.support.nativejdbc、mock.staticmock(來自spring-aspects模塊)或web.view.tiles2M。Tiles 3現(xiàn)在是Spring的最低要求。

五:Spring核心和容器的一般更新:

Spring 5改進了掃描和識別組件的方法,使大型項目的性能得到提升。目前,掃描是在編譯時執(zhí)行的,而且向META-INF/spring.components文件中的索引文件添加了組件坐標(biāo)。該索引是通過一個為項目定義的特定于平臺的應(yīng)用程序構(gòu)建任務(wù)來生成的。

標(biāo)有來自javax包的注解的組件會添加到索引中,任何帶@Index注解的類或接口都會添加到索引中。Spring的傳統(tǒng)類路徑掃描方式?jīng)]有被刪除,而是保留下來作為一種后備選擇。有許多針對大型代碼庫的明顯性能優(yōu)勢,托管許多Spring項目的服務(wù)器也會縮短啟動時間。

Spring 5還添加了對@Nullable的支持,后者可用于指示可選的注入點。使用者現(xiàn)在必須準(zhǔn)備接受null值。此外,還可以使用此注解來標(biāo)記可以為null的參數(shù)、字段和返回值。@Nullable主要用于IntelliJ IDEA等IDE,但也可用于Eclipse和FindBugs,它使得在編譯時處理null值變得更方便,無須在運行時發(fā)送NullPointerExceptions。

Spring Logging還提升了性能,自帶開箱即用的Commons Logging橋接器?,F(xiàn)在已通過資源抽象支持防御性編程,為getFile訪問提供了isFile指示器。

總結(jié):

Spring 5的首要特性是新的反應(yīng)式編程模型,這代表著對提供可無縫擴展、基于Spring的響應(yīng)式服務(wù)的重大保障。隨著人們對Spring 5的采用,反應(yīng)式編程有望成為使用Java語言的Web和企業(yè)應(yīng)用程序開發(fā)的未來。

未來的Spring將繼續(xù)體現(xiàn)這一承諾,因為SpringSecurity、Spring Data和Spring Integration有望采用反應(yīng)式編程的特征和優(yōu)勢。

總之,Spring 5代表著一次大受Spring開發(fā)人員歡迎的華麗轉(zhuǎn)變,同時也為其他框架指出了一條發(fā)展之路。Spring 5的升級也為Spring Boot、Spring Cloud提供了非常豐富的經(jīng)驗,Spring不只是一個框架,已然成了一個編程生態(tài)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容