對Spring的了解
對于Spring框架,其實大家對它不陌生钓葫,比如我們面試的時候拨匆,說說你對spring的了解茄唐,脫口而出的控制反轉(zhuǎn)ioc(Inversion of Control)和面向切面編程aop(Aspect Oriented Programming)凸郑。但其實我覺得對于Spring框架給咱們帶來的方便辜限,就是對于bean的操作交給容器去管理蛮位,我們只需要讓容器去創(chuàng)建我們需要的bean就可以了逊移。而不是自己每次使用的時候都需要將對象new一下预吆,降低代碼之間的耦合度。
缺點就是對于xml配置過多胳泉,導(dǎo)致我們在用spring框架需要配置過多的xml配置文件拐叉。這個也在之后的springboot中進(jìn)行了簡化。
那我們大概說一下spring的這幾個點
依賴注入DI(Dependency injection)
DI:將所依賴的關(guān)系自動交給目標(biāo)對象扇商,而不是讓對象自己去獲得依賴凤瘦,從而實現(xiàn)松耦合。
DI分為依賴和注入
- 依賴:依賴DI容器提供外部資源
- 注入:將對象需要的外部資源通過DI容器注入進(jìn)來
那怎么將對象注入進(jìn)來案铺?
- 可以通過注解的方式自動裝配
- 可以通過Java的注解配置進(jìn)行裝配
- 可以通過xml的方式進(jìn)行裝配
這幾種方式我們會在之后進(jìn)行詳解蔬芥。
面向切面編程(apect-oriented programming,AOP)
面向切面編程是促使軟件系統(tǒng)實現(xiàn)關(guān)注點分離的一項技術(shù)。我們可以把日志,安全和事物關(guān)注點與核心邏輯相分離笔诵。這樣我們只需要關(guān)注于核心邏輯代碼的編寫返吻。
Spring容器
- 容器是spring框架的核心,負(fù)責(zé)創(chuàng)建對象乎婿,裝配它們测僵,配置它們并且管理它們的整個生命周期。
- Spring容器使用DI管理構(gòu)成應(yīng)用的組件次酌,它會創(chuàng)建相互寫作的組件之間的聯(lián)系(將外部資源通過DI容器注入到哪個需要它的對象)
- Spring容器分為兩個類型:bean工廠和應(yīng)用上下文
- bean工廠(org.springframework.beans.factory.BeanFactory接口定義)是最簡單的容器恨课,提供基本的DI支持
- 應(yīng)用上下文(由org.springframework.context.ApplicationContext接口定義)舆乔,基于BeanFactory構(gòu)建岳服,并提供應(yīng)用框架級別的服務(wù),例如從屬性文件解析文本信息以及發(fā)布應(yīng)用時間給感興趣的事件監(jiān)聽者希俩。下面羅列幾個可能會遇到的
- AnnotationConfigApplicationContext:獨立的應(yīng)用程序上下文吊宋,接受帶注釋的類作為輸入,特別是@Configuration注釋的類或者@Component類型颜武。從一個或多個基于java配置類中加載Spring應(yīng)用上下文璃搜。
- AnnotationConfigWebApplicationContext:從一個或多個基于java配置類中加載Spring Web應(yīng)用上下文。
- ClassPathXmlApplicationContext:從類路徑下的一個或多個xml配置文件中加載上下文定義鳞上。
- FileSystemXmlApplicationContext:從文件系統(tǒng)下的一個或多個xml配置文件中加載上下文定義这吻。
- XmlWebApplicationContext:從web應(yīng)用下的一個或多個xml配置文件中加載上下文定義。
Spring模塊
上圖是spring5的核心模塊篙议,詳細(xì)內(nèi)容可以去其它博客查看唾糯。spring5體系架構(gòu)