版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
基于SSM框架的軟件架構設計實戰(zhàn)Software
Architecture
Design
Practice
Based
on
SSM
Framework第5章Spring的IoC機制1234IoC的概念基于XML的配置基于注解的配置基于Java類的配置IoC的概念IoC的概念所謂控制反轉是指將某一接口(或類)的具體實現(xiàn)類(或子類)的選擇權從調用者手中移除,轉交給第三方,使得程序中所有對象的創(chuàng)建過程都由第三方統(tǒng)一管理,當代碼中需要使用某一類的對象時,只需要從第三方直接獲取即可。IoC并不是一種特定的技術,而是一種設計思想,其主要目的就是接管系統(tǒng)中各個對象的創(chuàng)建過程,使產(chǎn)生依賴關系的兩個對象之間擺脫依賴關系,達到模塊間解耦的目的。IoC的概念控制反轉和工廠模式IoC是一種程序設計思想,而不是一種特定的技術,工廠模式是一種設計模式,是在長期的軟件設計工作中總結出來的用于解決軟件設計問題的模式,它是針對對象創(chuàng)建問題提出的一種具體解決方案。通過工廠模式,可以實現(xiàn)IoC這種思想,因此可以說,工廠模式是實現(xiàn)控制反轉的一種方式。IoC的概念控制反轉和依賴注入應用IoC思想后,對象的創(chuàng)建過程雖然不需要調用者進行管理,但對象的各個成員的初始化還是需要調用者負責,而依賴注入(DependencyInjection,DI)指的就是將對象的內各個成員的初始化和賦值工作也交給第三方,不需要開發(fā)人員手動管理。因此,可以說控制反轉和依賴注入所表達的是同一種軟件設計思想。IoC的概念Spring中的控制反轉在Spring中,將程序中要使用的各個對象稱為Bean,而對象(也就是Bean)的管理者稱為容器(Container),SpringIoC包括以下組成部分:1.資源描述組件2.資源加載組件3.Bean描述組件4.Bean構造組件5.容器組件6.Bean注冊組件應用程序XML注解Java類Bean配置信息Spring容器Bean實現(xiàn)類Class1Class2……Bean定義注冊表Bean緩存池1.讀取Bean配置信息2.根據(jù)Bean注冊表實例化Bean3.將Bean實例放到緩存池中4.使用BeanIoC的概念Spring中的控制反轉SpringIoC容器首先讀取Bean的配置信息,這些配置信息可能來自于XML配置文件、代碼注解或Java類,而后根據(jù)Bean的配置信息對Bean進行裝配,并將裝配好的Bean存入容器的Bean緩存池中,應用程序使用Bean時,只需從容器中獲取即可。在Spring的當前版本中,支持三種配置方式,分別為:基于XML的配置基于注解的配置基于Java類的配置基于XML的配置基于XML的配置——Bean的實例化實例化Bean的三種方法默認構造函數(shù)靜態(tài)工廠實例工廠方法1:使用默認構造函數(shù)前提:Bean的實現(xiàn)類必須有默認構造函數(shù)基于XML的配置——Bean的實例化配置文件:基于XML的配置——Bean的實例化測試代碼:方法2:使用靜態(tài)工廠前提:工廠類中要有靜態(tài)生產(chǎn)方法基于XML的配置——Bean的實例化工廠類:基于XML的配置——Bean的實例化配置文件:方法3:使用實例工廠前提:工廠類中要有非靜態(tài)生產(chǎn)方法基于XML的配置——Bean的實例化工廠類:基于XML的配置——Bean的實例化配置文件:基于XML的配置——Bean的生命周期與Bean的生命周期有關的配置設置Bean的作用范圍(scope屬性)延遲初始化(lazy-init和default-lazy-init屬性)初始化方法和銷毀方法(init-method和destroy-method屬性)設置Bean的作用范圍(scope屬性)基于XML的配置——Bean的生命周期配置文件:基于XML的配置——Bean的生命周期scope屬性的可選值singleton(默認):在容器初始化時創(chuàng)建Bean,每次取到的是同一實例prototype:在每次獲取時創(chuàng)建Bean,每次取到的是新的實例request:每次HTTP連接創(chuàng)建一個新的Bean實例session:同一個Session共享一個Bean實例application:同一個Application共享一個Bean實例websocket:每次websocket連接創(chuàng)建一個新的Bean實例延遲初始化(lazy-init和default-lazy-init屬性)作用:在Bean的作用范圍為singleton時,第一次獲取Bean時創(chuàng)建實例只有當scope屬性為singleton時這兩個屬性才有效基于XML的配置——Bean的生命周期配置文件:或:Bean的初始化和銷毀方法(init-method和destroy-method屬性)作用:配置在Bean創(chuàng)建完成和銷毀之前需要調用的方法注意:要想讓銷毀方法被調用,需要關閉容器基于XML的配置——Bean的生命周期配置文件:基于XML的配置——基于setter的屬性注入原理:基于Java的反射機制,間接調用Bean的實現(xiàn)類的set方法,實現(xiàn)屬性注入前提:需要注入的成員要定義setter基于XML的配置——基于setter的屬性注入字面值的setter注入字面值:基本數(shù)據(jù)類型+String方法:使用<property>和<value>標簽或<property>標簽的value屬性基于XML的配置——基于setter的屬性注入配置文件:基于XML的配置——基于setter的屬性注入也可以使用<bean>標簽的value屬性:基于XML的配置——基于setter的屬性注入字面值setter注入注意事項:使用<value></value>標簽,或使用<property>標簽的value屬性注意數(shù)據(jù)類型對象類型的setter注入方法1:引用其它Bean使用<ref>標簽或<property>標簽的ref屬性基于XML的配置——基于setter的屬性注入基于XML的配置——基于setter的屬性注入配置文件:或:對象類型的setter注入方法2:內部Bean在<property>標簽內部使用<bean>標簽定義內部Bean基于XML的配置——基于setter的屬性注入配置文件:對象類型的setter注入方式3:級聯(lián)屬性基于XML的配置——基于setter的屬性注入配置文件:基于XML的配置——基于setter的屬性注入對象類型setter注入注意事項三種方式:引用其它Bean,定義內部Bean、使用級聯(lián)屬性null值:使用<null/>標簽集合類型的屬性注入:List類型使用<list>標簽基于XML的配置——基于setter的屬性注入配置文件:集合類型的屬性注入:Set類型使用<set>標簽基于XML的配置——基于setter的屬性注入配置文件:集合類型的屬性注入:Map類型使用<map>標簽基于XML的配置——基于setter的屬性注入配置文件:基于XML的配置——基于setter的屬性注入集合類型的屬性注入:Map類型說明<entry>標簽:代表一個元素<key>標簽:代表鍵值是字面值,使用<value>標簽,是對象類型,使用<ref>標簽也可以使用<entry>的key屬性和value屬性(或key-ref屬性和value-ref屬性)基于XML的配置——基于構造函數(shù)的屬性注入原理:基于Java的反射機制,間接調用Bean的實現(xiàn)類的帶參數(shù)構造函數(shù),實現(xiàn)對其各屬性的賦值。前提:重載帶參數(shù)構造函數(shù)主要問題:參數(shù)的對應方法:使用<constructor-arg>標簽按順序匹配參數(shù)(默認方式)基于XML的配置——基于構造函數(shù)的屬性注入按索引匹配參數(shù):使用<constructor-arg>的index屬性基于XML的配置——基于構造函數(shù)的屬性注入按類型匹配參數(shù):使用<constructor-arg>的type屬性基于XML的配置——基于構造函數(shù)的屬性注入按名稱匹配參數(shù):使用<constructor-arg>的name屬性基于XML的配置——基于構造函數(shù)的屬性注入多種方式混合匹配參數(shù)基于XML的配置——基于構造函數(shù)的屬性注入基于XML的配置——基于構造函數(shù)的屬性注入注意事項構造函數(shù)入?yún)⒁玫膶ο蟊仨殰蕚渚途w把<value>替換成<ref>就是對象類型的注入<value>標簽也可以替換成<constructor-arg>的value屬性<ref>標簽也可以替換成<constructor-arg>的ref屬性也可以在<constructor-arg>中定義內部Bean把<value>替換成集合,就是集合類型的注入基于XML的配置——工廠方法注入原理在工廠方法中設置對象的屬性值,通過工廠方法實例化Bean以后,即完成了屬性的注入分類靜態(tài)工廠實例工廠基于XML的配置——工廠方法注入工廠類:基于XML的配置——工廠方法注入配置文件:基于XML的配置——p命名空間、c命名空間和util命名空間原理使用p命名空間注入時,將需要注入的屬性名作為<bean>標簽的一個屬性,從而免于配置多個<property>子標簽,起到簡化配置的作用。在使用前,需要在配置文件里聲明p命名空間p命名空間注入:字面值基于XML的配置——p命名空間、c命名空間和util命名空間p命名空間注入:對象類型util命名空間:允許我們定義一個集合,然后像引用Bean一樣引用這個集合在使用前,需要先聲明util命名空間基于XML的配置——p命名空間、c命名空間和util命名空間p命名空間注入:集合類型(結合util命名空間)基于XML的配置——p命名空間、c命名空間和util命名空間c命名空間:與基于p命名空間的注入類似,將需要注入的屬性名作為<bean>標簽的一個屬性,起到簡化配置的作用。在使用前,需要先聲明c命名空間基于XML的配置——p命名空間、c命名空間和util命名空間c命名空間注入:字面值、對象類型和集合類型(結合util命名空間)基于XML的配置——p命名空間、c命名空間和util命名空間基于XML的配置——Bean之間的關系繼承涉及屬性:abstract、parent依賴涉及屬性:depends-on基于XML的配置——Bean之間的關系繼承如果多個Bean存在相同的配置信息,Spring允許我們定義一個父Bean,子Bean將自動繼承父Bean的配置信息。父Bean使用abstract=true屬性,它是抽象的,不能被實例化。子Bean使用parent屬性,指明其父Bean是誰。配置文件基于XML的配置——Bean之間的關系基于XML的配置——Bean之間的關系依賴使用<ref>標簽和ref屬性定義的依賴Spring可以自動處理,保證被依賴的Bean先被實例化。有的時候Bean之間不存在引用關系,但需要指明它們創(chuàng)建的先后順序,這就需要顯式地配置Bean之間的依賴關系。配置Bean之間的依賴關系使用<bean>標簽的屬性depends-on。配置文件基于XML的配置——Bean之間的關系基于注解的配置基于注解的配置原理掃描源代碼,遇到注解調用相應的注解處理程序完成注入優(yōu)勢簡化配置局限具有侵入性使用前提聲明context命名空間,在配置文件中配置包掃描基于注解的配置聲明命名空間配置包掃描基于注解的配置三類注解用于Bean的自動注冊的注解用于Bean的生命周期的注解用于屬性注入的注解基于注解的配置用于Bean的自動注冊的注解(用于類)@Component:通用@Repository:標注數(shù)據(jù)訪問層的Bean@Service:標注業(yè)務邏輯層的Bean@Controller:標注控制器層的Bean基于注解的配置使用案例基于注解的配置用于Bean的生命周期的注解@Scope(“singleton”):用于類,標注Bean的作用范圍@Lazy(true/false):用于類,標注延遲初始化@PostConstruct:用于方法,標注Bean的初始化方法@PreDestroy:用于方法,標注Bean的銷毀方法基于注解的配置使用案例基于注解的配置用于屬性注入的注解@Value:注入字面值@Autowired:默認按類型匹配@Qualifier:與@Autowired配合,指定Bean的名稱@Resource:通過名稱或類型匹配基于注解的配置@Value用于類的成員、setter或是構造函數(shù)參數(shù)上,可以用于注入字面值基于注解的配置用于類成員用于setter基于注解的配置用于構造函數(shù)參數(shù)基于注解的配置@Autowired用于類成員,也可以用于setter,還可以用于構造函數(shù),用于注入對象類型成員默認按照類型匹配要注入的Bean基于注解的配置用于類成
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 小學一年級20以內加減法口算練習題
- 砍伐樹木申請書
- 《急救藥品的使用》課件
- 埋弧焊的工作原理及特點
- 《民生銀行商貸通》課件
- 環(huán)保節(jié)能行業(yè)助理工作總結
- 家居建材行業(yè)市場推廣總結
- 陜西省銅川市耀州區(qū)2023-2024學年九年級上學期期末調研化學試題
- 主管工作總結計劃方案
- 農(nóng)林漁業(yè)客服工作感悟
- 加德納多元智能理論教學課件
- 北師大版數(shù)學八年級上冊全冊教案
- 現(xiàn)代文閱讀之散文
- 從業(yè)人員在安全生產(chǎn)方面的權利和義務
- 新開模具清單
- 抗菌藥物臨床應用指導原則(2023年版)
- 2023年軍政知識綜合題庫
- 2023-2024學年福建省福州市小學語文 2023-2024學年六年級語文期末試卷期末評估試卷
- YY 0286.1-2019專用輸液器第1部分:一次性使用微孔過濾輸液器
- GB/T 22544-2008蛋雞復合預混合飼料
- GB/T 12224-2015鋼制閥門一般要求
評論
0/150
提交評論