Spring有哪些特性

本篇內(nèi)容介紹了“Spring有哪些特性”的有關(guān)知識(shí),在實(shí)際案例的操作過程中,不少人都會(huì)遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

成都創(chuàng)新互聯(lián)是專業(yè)的新賓網(wǎng)站建設(shè)公司,新賓接單;提供成都做網(wǎng)站、成都網(wǎng)站建設(shè),網(wǎng)頁設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行新賓網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來合作!

Spring了解

簡(jiǎn)而言之Spring是Java目前第一大框架,雛型是一個(gè)音樂博士發(fā)明到interface21,Spring框架是由于軟件開發(fā)的復(fù)雜性而創(chuàng)建的,Spring的用途不僅僅限于服務(wù)器端的開發(fā)。從簡(jiǎn)單性、可測(cè)試性和松耦合性角度而言,絕大部分Java應(yīng)用都可以從Spring中受益,Spring是一個(gè)全面的解決方案,它堅(jiān)持一個(gè)原則:不從新造輪子。已經(jīng)有較好解決方案的領(lǐng)域,Spring絕不重復(fù)性實(shí)現(xiàn),比如:對(duì)象持久化和OR映射,Spring只對(duì)現(xiàn)有的JDBC,Hibernate等技術(shù)提供支持,使之更容易使用,而不做重復(fù)的實(shí)現(xiàn)。Spring框架有很多特性,Spring官網(wǎng)給出對(duì)Spring提供的功能如下:

Spring make java more simple
Spring make java more modern
Spring make java more reactive
Spring make java more productive
Spring make java more cloud-ready

用人話來說就是

  1. 讓現(xiàn)有的技術(shù)更容易使用,

  2. 促進(jìn)良好的編程習(xí)慣。

  3. 大大簡(jiǎn)化應(yīng)用程序的開發(fā)。

Spring特性如下:
Spring有哪些特性

Spring框架

Spring框架是分模塊存在,除了最核心的Spring Core Container(即Spring容器)是必要模塊之外,其他模塊都是可選,視需要而定。大約有20多個(gè)模塊。
Spring有哪些特性
一般來說,Spring主要分為7個(gè)模塊:

Spring有哪些特性
Spring框架有很多特性,這些特性由7個(gè)定義良好的模塊構(gòu)成。
Spring有哪些特性

  1. Spring Core:Spring核心,它是框架最基礎(chǔ)的部分,提供IOC和依賴注入特性。

  2. Spring Context:Spring上下文容器,它是BeanFactory功能加強(qiáng)的一個(gè)子接口

  3. Spring Web:它提供Web應(yīng)用開發(fā)的支持

  4. Spring MVC:它針對(duì)Web應(yīng)用中MVC思想的實(shí)現(xiàn)

  5. Spring DAO:提供對(duì)JDBC抽象層,簡(jiǎn)化了JDBC編碼,同時(shí),編碼更具有健壯性。

  6. Spring ORM:它支持用于流行的ORM框架的整合,比如:Spring + Hibernate、Spring + iBatis、Spring + JDO的整合等。

  7. Spring AOP:AOP即,面向切面編程,它提供了與AOP聯(lián)盟兼容的編程實(shí)現(xiàn)。

主要的Jar包如下(借鑒了大佬圖):
Spring有哪些特性

Spring優(yōu)點(diǎn)

Spring提供了良好的代碼組織邏輯跟業(yè)務(wù)開發(fā)流程規(guī)范框架,因?yàn)槿绻覀円獙?shí)現(xiàn)一個(gè)功能,代碼量一般都是固定的,要不我們?nèi)约簩?,要不我們用?yōu)秀的已經(jīng)寫好的各種組件,Spring就已經(jīng)給我們提供了各種優(yōu)秀組件,主要優(yōu)點(diǎn)如下:

  1. IOC跟DI的支持

Spring就是一個(gè)大工廠(容器),可以將所有對(duì)象創(chuàng)建和依賴關(guān)系維護(hù),交給Spring管理
spring工廠是用于生成bean,并且管理Bean的生命周期,踐行著高內(nèi)聚低耦合的設(shè)計(jì)理念。

  1. AOP編程的支持

Spring提供面向切面編程,可以方便的實(shí)現(xiàn)對(duì)程序進(jìn)行權(quán)限攔截、運(yùn)行監(jiān)控等功能

  1. 聲明式事務(wù)的支持

只需要通過配置就可以完成對(duì)事務(wù)的管理,而無需手動(dòng)編程,以前重復(fù)的一些JDBC操作,統(tǒng)統(tǒng)不需我們?cè)賹懥恕?/p>

  1. 方便程序的測(cè)試

Spring對(duì)Junit4提供支持,可以通過注解方便的測(cè)試Spring程序。

  1. 粘合劑功能

方便集成各種優(yōu)秀框架,Spring不排斥各種優(yōu)秀的開源框架,其內(nèi)部提供了對(duì)各種優(yōu)秀框架(如:Struts、Hibernate、MyBatis、Quartz等)的直接支持

  1. 降低JavaEE API的使用難度

Spring 對(duì)JavaEE開發(fā)中非常難用的一些API(JDBC、JavaMail、遠(yuǎn)程調(diào)用等),都提供了封裝,使這些API應(yīng)用難度大大降低

Bean

在Spring中POJO(Plain Ordinary Java Object)簡(jiǎn)單的Java對(duì)象,實(shí)際就是普通JavaBeans。
JavaBean中的這個(gè)bean是豆莢的意思,顧名思義,JavaBean設(shè)計(jì)者的初衷是就是讓這個(gè)類體現(xiàn)豆莢的封裝性(豆莢把豌豆都封裝在里面了)。JavaBean 類也是一個(gè)類,只不過這個(gè)類有一些特殊的特性而已如下:

1.如果類的成員變量的名字是xxx,那么為了更改或獲取成員變量的值,即更改或獲取屬性,在類中可以使用兩個(gè)方法:
java getXxx(),用來獲取屬性xxx。 setXxx(),用來修改屬性xxx.。
2. 對(duì)于 boolean 類型的成員變量,即布爾邏輯類型的屬性,允許使用"is"代替上面的"get"和"set"。
3. 類中方法的訪問屬性都必須是public的。
4. 類中如果有構(gòu)造方法,那么這個(gè)構(gòu)造方法也是public的并且是無參數(shù)的(個(gè)人感覺沒那么嚴(yán)格)。

說白了JavaBean無非就是面向?qū)ο蠓庋b的一種良好體現(xiàn),比如一般情況下 我們將實(shí)現(xiàn)業(yè)務(wù)的基本單元 比如person、dog等類,擁有年齡,身高,體重等基本屬性。我們將這些基本屬性封裝成一個(gè)整體類,然后用邏輯判斷層來處理這樣的整體類。

核心思想

提到Spring永遠(yuǎn)離不開的兩個(gè)話題就是 IOC跟AOP,先簡(jiǎn)單說下這兩個(gè)詞的概念:

IOC

SpringIOC核心就是 反射 + xml解析,
IOC容器(Inversion of Controller) 控制反轉(zhuǎn),Java思想是面向?qū)ο蟮拈_發(fā),一個(gè)應(yīng)用程序是由一組對(duì)象通過相互協(xié)作開發(fā)出的業(yè)務(wù)邏輯組成,那么如何管理這些對(duì)象,使他們高效地協(xié)作呢?抽象工廠、工廠方法設(shè)計(jì)模式”可以幫我們創(chuàng)建對(duì)象,生成器模式幫我們處理對(duì)象間的依賴關(guān)系,不也能完成這些功能嗎?可是這些又需要我們創(chuàng)建另一些工廠類、生成器類,我們又要而外管理這些類,增加了我們的負(fù)擔(dān)。所以用另外的方式,如果對(duì)象需要的時(shí)候,就自動(dòng)地生成對(duì)象,不用再去創(chuàng)建。

舉個(gè)例子:原來我們餓了,就要自己買各種東西做飯,但是現(xiàn)在有了外賣之后,就可以訂餐了,我們可以把我們的需求告訴美團(tuán),讓他們給我們送飯。這里主導(dǎo)關(guān)系發(fā)生了變化,原來是我們自己,但是現(xiàn)在是美團(tuán)。

Spring提出了一種思想:就是由Spring來負(fù)責(zé)控制對(duì)象的生命周期和對(duì)象間的關(guān)系。所有的類都會(huì)在Spring容器中登記,告訴Spring你是個(gè)什么東西,你需要什么東西,然后Spring會(huì)在系統(tǒng)運(yùn)行到適當(dāng)?shù)臅r(shí)候,把你要的東西主動(dòng)給你,同時(shí)也把你交給其他需要你的東西。所有的類的創(chuàng)建、銷毀都由spring來控制,也就是說控制對(duì)象生存周期的不再是引用它的對(duì)象,而是spring。對(duì)于某個(gè)具體的對(duì)象而言,以前是它控制其他對(duì)象,現(xiàn)在是所有對(duì)象都被spring控制,所以這叫控制反轉(zhuǎn),在Spring代碼中很難看到new 對(duì)象這樣的操作了。

AOP

AOP(Aspect Oriented Programming)稱為面向切面編程,有點(diǎn)方法增強(qiáng)的意思。AOP的核心其實(shí)就是動(dòng)態(tài)代理。
設(shè)想下比如進(jìn)行一個(gè)計(jì)算器的編寫,需要實(shí)現(xiàn)加減乘除的運(yùn)算,編寫四種不同的方法。還有另外的兩個(gè)需求是在每種運(yùn)算之前和運(yùn)算之后需要打印日志進(jìn)行記錄,需要進(jìn)行數(shù)字合規(guī)的校驗(yàn)。我們就得考慮如何能簡(jiǎn)單地實(shí)現(xiàn)呢?

  1. 日志記錄數(shù)據(jù)校驗(yàn)可重用的功能模塊分離出來,然后在程序的執(zhí)行的合適的地方動(dòng)態(tài)地植入這些代碼并執(zhí)行。這樣就簡(jiǎn)化了代碼的書寫。
    業(yè)務(wù)邏輯代碼中沒有參和通用邏輯的代碼,業(yè)務(wù)模塊更簡(jiǎn)潔,只包含核心業(yè)務(wù)代碼。實(shí)現(xiàn)了業(yè)務(wù)邏輯和通用邏輯的代碼分離,便于維護(hù)和升級(jí),降低了業(yè)務(wù)邏輯和通用邏輯的耦合。

Spring通過配置的方式,而且不需要在業(yè)務(wù)邏輯代碼中添加任何額外代碼,就可以很好地實(shí)現(xiàn)上述功能。以上這種方式就是spring中實(shí)現(xiàn)的AOP:意思是面向切面編程,提供從另一個(gè)角度來考慮程序結(jié)構(gòu)以完善面向?qū)ο缶幊蹋ㄏ鄬?duì)于OOP),在編譯期間、裝載期間或運(yùn)行期間實(shí)現(xiàn)在不修改源代碼的情況下給程序動(dòng)態(tài)添加功能的一種技術(shù)。

人話:通俗點(diǎn)說就是把可重用的功能提取出來,然后將這些通用功能在合適的時(shí)候織入到應(yīng)用程序中(以前跟過AOP代碼好像是動(dòng)態(tài)的在內(nèi)存中組織處切面代碼跟業(yè)務(wù)代碼融合最終生成可執(zhí)行代碼);比如安全,日記記錄,這些都是通用的功能,我們可以把它們提取出來,然后在程序執(zhí)行的合適地方織入這些代碼并執(zhí)行它們,從而完成需要的功能并復(fù)用了這些功能。

發(fā)展史

Spring FrameworkJDK
1.x1.3:引入了動(dòng)態(tài)代理機(jī)制,AOP 底層就是動(dòng)態(tài)代理,所以 Spring 必須是 JDK 1.3
2.x1.4:正常升級(jí)
3.x5: 引入注解,Spring 3 最低版本是 Java 5 ,從此以后不叫1.x 直接叫x
4.x6: Spring 4 是有劃時(shí)代意義的版本,開始支持 Spring Boot 1.X
5.x8:lambda 表達(dá)式等功能

目前Java 開發(fā)的標(biāo)配: Spring Framwork 5、Spring Boot 2、JDK 8。

“Spring有哪些特性”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!

當(dāng)前標(biāo)題:Spring有哪些特性
URL分享:http://bm7419.com/article30/gejepo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站建設(shè)、營銷型網(wǎng)站建設(shè)、面包屑導(dǎo)航、建站公司、Google、移動(dòng)網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)