一:Spring框架體系
二:IOC
1.IOC定義
IOC:控制反轉,是一個理論,概念,思想。把對象的創建,賦值,管理工作都交給代碼之外的容器實現,也就是對象的創建是有其它外部資源完成,這樣做實現了與解耦合。
(1)正轉:對象的創建、賦值等操作交由程序員手動完成,即使用類似new Xxx(Xxx Xxx)、Xxx.setXxx()語句完成對象的創建與賦值,缺點是一旦程序功能發生改變,涉及到的類就要修改代理,耦合度高,不便於維護和管理。
(2)反轉:對象的創建、賦值等操作交由代碼之外的容器實現,有容器代替程序員完成對象的創建、賦值;且當程序功能發生變化時,只需要修改容器的配置文件即可。
2.I(Dependency Injection依賴注入)
(1)IOC的作用:降低程序之間的耦合(依賴關係)
概念:依賴關係的管理交給spring維護,在當前類需要用到其他類的對象,由spring為我們提供,只需在配置文件中説明關係的維護;
(2)能夠注入的數據有三類:
1>基本類型和string
2>其他bean類型(在配置文件中或者註解配置過的bean)
3>複雜集合類型
(3)注入方式
1>使用構造方法
2>set方法注入(常用)
3>基於註解配置IoC容器
用於創建對象:
作用和XML配置文件的<bean>標籤的實現功能一致;
@Component:用於當前類存入spring容器
屬性:value: 用於指定bean的id,當我們不寫時,默認為當前類的名稱且首字母小寫
@Controller : 用於表現層
@Service: 用於業務層
@Repository: 用於持久層
用於注入數據:
作用和XML配置文件中的bean標籤中的<property>作用一樣;
@Autowried:自動按類型注入,只要容器中由唯一的bean對象類型和要注入的變量類型匹配,就可以成功注入出現位置:可以為成員變量,也可以為方法
@Qualifier: 再按照類中注入的基礎之上再按照名稱注入,它在給類成員注入時不能單獨使用和Autowired配合使用,但是給方法注入時可以
屬性:value:用於指定注入bean的id
@Resources:直接按照bean的id注入,它可以獨立使用
屬性:name:用於指定bean的id
以上三種注入只能注入其他bean類型的數據,而基本類型和String類型無法使用上述註解實現
@Value:用於注入基本類型和String類型數據
屬性:value:用於指定數據的值,它可以使用spring中的spEL(也就是spring的el表達式)
SpEl的寫法:${表達式}
三:給容器中註冊組件
1.導包
2.寫配置
3.測試
四:AOP
1.AOP(Aspect Oriented Programming),即面向切面編程,使用"橫切"技術,AOP把軟件系統分為兩個部分:核心關注點和橫切關注點。業務處理的主要流程是核心關注點,與之關係不大的部分是橫切關注點。橫切關注點的一個特點是,他們經常發生在核心關注點的多處,而各處基本相似,比如權限認證、日誌、事物。AOP的作用在於分離系統中的各種關注點,將核心關注點和橫切關注點分離開來。
2.AOP核心概念
(1)橫切關注點
對哪些方法進行攔截,攔截後怎麼處理,這些關注點稱之為橫切關注點
(2)切面(aspect)
類是對物體特徵的抽象,切面就是對橫切關注點的抽象
(3)連接點(joinpoint)
被攔截到的點,因為Spring只支持方法類型的連接點,所以在Spring中連接點指的就是被攔截到的方法,實際上連接點還可以是字段或者構造器
(4)切入點(pointcut)
對連接點進行攔截的定義
(5)通知(advice)
所謂通知指的就是指攔截到連接點之後要執行的代碼,通知分為前置、後置、異常、最終、環繞通知五類
(6)目標對象
代理的目標對象
(7)織入(weave)
將切面應用到目標對象並導致代理對象創建的過程
(8)引入(introduction)
在不修改代碼的前提下,引入可以在運行期為類動態地添加一些方法或字段