Spring總結(jié)

Spring的概念

Spring是個(gè)java企業(yè)級應(yīng)用的開源開發(fā)框架,旨在降低應(yīng)用程序開發(fā)的復(fù)雜度。是一個(gè)輕量級,松散耦合的,具有分層體系結(jié)構(gòu),可繼承其他框架的框架。

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

輕量:基本的版本大約2MB。
控制反轉(zhuǎn)(IOC):實(shí)現(xiàn)了松散耦合,將對象交給容器管理,對象們給出它們的依賴,由容器去創(chuàng)建或查找(簡述:反轉(zhuǎn):指的是資源的反轉(zhuǎn),之前是對象去容器請求,控制反轉(zhuǎn)后,是容器向調(diào)用者注入)。
在系統(tǒng)運(yùn)行時(shí),容器創(chuàng)建被調(diào)用者,然后注入調(diào)用者中,這種情況叫做依賴注入(DI),依賴注入是通過java的反射機(jī)制實(shí)現(xiàn)的。
反射:允許程序在運(yùn)行的時(shí)候動(dòng)態(tài)地生成對象,執(zhí)行對象,設(shè)置對象屬性。
面向切面(AOP)
面向切面編程把軟件系統(tǒng)分為兩個(gè)部分:核心關(guān)注點(diǎn)橫切關(guān)注點(diǎn),將業(yè)務(wù)程序和系統(tǒng)服務(wù)分開;
面向切面編程是基于代理模式實(shí)現(xiàn)的;
代理模式分為:
靜態(tài)代理:編譯時(shí)
動(dòng)態(tài)代理:運(yùn)行時(shí)
動(dòng)態(tài)代理實(shí)現(xiàn)的兩種方式:JDK代理和CGlib代理
JDK基于接口的動(dòng)態(tài)代理
CGilb實(shí)現(xiàn)子類的動(dòng)態(tài)代理

容器:Spring包含并管理對象的生命周期和配置:
MVC框架:Spring的WEB框架
事務(wù)管理:Spring提供了一個(gè)持續(xù)的事務(wù)管理接口,可以擴(kuò)展上至本地事務(wù)下至全局事務(wù)(JTA)
異常處理:把具體技術(shù)相關(guān)的異常轉(zhuǎn)化為一致的unchecked異常

解釋JDBC抽象和DAO模塊

保證數(shù)據(jù)庫代碼的簡潔,并能避免數(shù)據(jù)庫資源錯(cuò)誤關(guān)閉導(dǎo)致的問題,在各種不同的數(shù)據(jù)庫的錯(cuò)誤信息之上,提供了一個(gè)統(tǒng)一的異常訪問層,提供事務(wù)管理服務(wù)。

BeanFactory和Application contexts區(qū)別?

Application contexts 提供了一個(gè)方法處理文本信息,一個(gè)通常的做法是加載文本資源(比如鏡像),可以向注冊為監(jiān)聽器的bean發(fā)布事件。
在容器或容器內(nèi)的對象,由BeanFactory以程序化方式處理操作,也可以在Application contexts中以聲明的方式處理。

依賴注入的方式:

1.構(gòu)造器依賴注入:構(gòu)造器依賴注入通過容器觸發(fā)一個(gè)類的構(gòu)造器來實(shí)現(xiàn)的,該類有一系列參數(shù),每個(gè)參數(shù)愛表一個(gè)對其他類的依賴。
2.Setter方式注入:Setter方法注入是容器通過調(diào)用無參構(gòu)造器或者無參static工廠方法實(shí)例化bean之后,調(diào)用該bean的setter犯法。即實(shí)現(xiàn)了基于setter的依賴注入。

用構(gòu)造器參數(shù)實(shí)現(xiàn)強(qiáng)制依賴,setter方法實(shí)現(xiàn)可選依賴。

Spring Bean的定義包含什么?

容器必知的所有配置化元數(shù)據(jù),包含如何創(chuàng)建一個(gè)bean,它惡生命周期詳情及它的依賴。

配置元數(shù)據(jù)的方法:

1.XML配置文件。
2.基于注解的配置。
3.基于java的配置。

定義類的作用域

bean定義中的scope,默認(rèn)singleton(單例)

spring支持bean的作用域:

1.singleton:bean在每一個(gè)spring ioc容器中只有一個(gè)實(shí)例。
2.prototype:一個(gè)bean可以有多個(gè)實(shí)例。
3.request:每次http請求就回創(chuàng)建一個(gè)bean,僅基于web的ApplicationContext情形下有效。
4.session:在一個(gè)http session中,一個(gè)bean定義對應(yīng)一個(gè)實(shí)例。同3條件。
5.global-session:在一個(gè)全局的http session中,一個(gè)bean定義對應(yīng)一個(gè)實(shí)例,同3,4的條件下。

spring的bean是非線程安全的

重要的bean生命周期方法:setup,容器加載bean的時(shí)候被調(diào)用;teardown,容器卸載類的時(shí)候被調(diào)用。

bean的裝配:

容器必須知道bean的依賴關(guān)系,以及如何依賴注入來把它們組裝在一起。

自動(dòng)裝配的方式:

1.no:默認(rèn)不進(jìn)行自動(dòng)裝配,通過顯示設(shè)置ref屬性來進(jìn)行裝配
2.byName:通過參數(shù)名自動(dòng)裝配,antowire屬性被設(shè)置成byname,容器試圖匹配,裝配和該bean具有相同名字的bean。
3.byType:通過參數(shù)類型自動(dòng)裝配,autowire屬性設(shè)置為bytype,具有同類型的bean。多個(gè)bean符合將拋出異常。
4.constructor:這個(gè)方式類似于byType, 但是要提供給構(gòu)造器參數(shù),如果沒有確定的帶參數(shù)的構(gòu)造器參數(shù)類型,將會(huì)拋出異常。
5.autodetect:首先嘗試使用constructor來自動(dòng)裝配,如果無法工作,則使用byType方式。

Spring支持的事務(wù)管理類型

Spring支持兩種類型的事務(wù)管理:
編程式事務(wù)管理:這意味你通過編程的方式管理事務(wù),給你帶來極大的靈活性,但是難維護(hù)。
?明式事務(wù)管理:這意味著你可以將業(yè)務(wù)代碼和事務(wù)管理分離,你只需用注解和XML配置來管理事務(wù)。

總結(jié):Spring 主要是實(shí)現(xiàn)了IOC和AOP

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

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

  • Spring框架的好處 輕量:基本的版本大約是2M IOC(控制反轉(zhuǎn)):Spring通過控制反轉(zhuǎn)實(shí)現(xiàn)了松散耦合,對...
    whupenger閱讀 322評論 0 0
  • 1、Spring是什么?Spring是一個(gè)輕量級的IoC和AOP容器框架。是為Java應(yīng)用程序提供基礎(chǔ)性服務(wù)的一套...
    月哥說了算閱讀 385評論 0 0
  • 1.什么是 Spring Spring是一個(gè)開源應(yīng)用框架,旨在降低應(yīng)用程序開發(fā)的復(fù)雜度,他是輕量級,松耦合的。它具...
    不要夜空霓虹的繁榮閱讀 179評論 0 0
  • 從大小、開銷兩方面而言,Spring 都是輕量級的; 通過控制反轉(zhuǎn)技術(shù)(IOC)達(dá)到松耦合; 通過面向切面編程(A...
    千反田愛瑠愛好者閱讀 589評論 0 0
  • 一篇關(guān)于spring的總結(jié) 主要:主要是分清楚AOP(面向切面編程),IOC(控制反轉(zhuǎn)/依賴注入),DI(IOC同...
    七枷琴子閱讀 622評論 0 1

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