版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
北京傳智播客教育Bean配置(XML)李若亮北京傳智播客教育Bean的初始化方式Spring提供三種方式初始化Bean對(duì)象類構(gòu)造器初始化(主流)靜態(tài)工廠方法初始化(非主流)實(shí)例工廠方法初始化(非主流)北京傳智播客教育類構(gòu)造器初始化Spring讀取加載的Bean的class,調(diào)用對(duì)應(yīng)class的無(wú)參構(gòu)造方法,實(shí)例化對(duì)象如果沒(méi)有提供無(wú)參構(gòu)造方法,Spring將無(wú)法初始化Bean實(shí)例applicationContext.xml中配置對(duì)應(yīng)的Bean <beanid="bean1"class="cn.itcast.spring.beanInit.Bean1"></bean>獲取Bean對(duì)象使用ApplicationContext對(duì)象進(jìn)行ApplicationContextctx=new ClassPathXmlApplicationContext("applicationContext.xml");Bean1bean1=(Bean1)ctx.getBean(“bean1");北京傳智播客教育靜態(tài)工廠初始化(了解)靜態(tài)工廠初始化方法是為了兼容早期項(xiàng)目的改造,目前已經(jīng)基本不使用此方式獲取Bean實(shí)例Bean實(shí)例的獲取需要使用工廠類中的靜態(tài)方法獲取提供工廠類,包含靜態(tài)方法獲取Bean實(shí)例publicclassBean2Factory{publicstaticBean2getInst(){ returnnewBean2();}}北京傳智播客教育靜態(tài)工廠初始化(了解)applicationContext.xml中配置對(duì)應(yīng)的Bean<beanid="bean2"
class="cn.itcast.spring.beanInit.Bean2Factory"
factory-method="getInst"></bean>class:配置工廠類的全路徑名factory-method:配置工廠類獲取實(shí)例的靜態(tài)方法名獲取Bean對(duì)象使用ApplicationContext對(duì)象進(jìn)行ApplicationContextctx=new ClassPathXmlApplicationContext("applicationContext.xml");Bean2bean2=(Bean2)ctx.getBean(“bean2");北京傳智播客教育實(shí)例工廠初始化(了解)Bean實(shí)例的獲取需要使用工廠類中的實(shí)例方法獲取提供工廠類,包含實(shí)例方法獲取Bean實(shí)例publicclassBean3Factory{publicBean3getInst(){ returnnewBean3();}}由于使用實(shí)例工廠需要先創(chuàng)建實(shí)例工廠的對(duì)象,因此在配置時(shí),實(shí)例工廠將作為一個(gè)Bean出現(xiàn),受Spring控制,配置實(shí)例工廠的Bean<beanid="bean3Factory"class="cn.itcast.spring.beanInit.Bean3Factory"></bean>北京傳智播客教育實(shí)例工廠初始化(了解)applicationContext.xml中配置對(duì)應(yīng)的Bean<beanid="bean3"
factory-bean=“bean3Factory”
factory-method="getInst"></bean>factory-bean:配置實(shí)例工廠Bean的名稱factory-method:配置實(shí)例工廠類獲取實(shí)例的方法名獲取Bean對(duì)象使用ApplicationContext對(duì)象進(jìn)行ApplicationContextctx=new ClassPathXmlApplicationContext("applicationContext.xml");Bean3bean3=(Bean3)ctx.getBean(“bean3");創(chuàng)建多個(gè)北京傳智播客教育Bean的作用域Spring中的Bean默認(rèn)創(chuàng)造出的對(duì)象是同一個(gè),也就是單例的,通過(guò)修改bean元素的scope屬性可以控制創(chuàng)建出的實(shí)例的作用域<beanid="beanScope"
scope="singleton" class="cn.itcast.spring.scope.Bean1"></bean>scope的取值可以使用如下值singletonprototyperequestsession/globalSession北京傳智播客教育Bean的作用域Bean的5種作用域singleton(默認(rèn))(常用)創(chuàng)建出的實(shí)例為單例模式,在IoC容器中唯一prototype(常用)創(chuàng)建出的實(shí)例為非單例模式,每次獲取bean得到新對(duì)象request(用于web開(kāi)發(fā))創(chuàng)建的實(shí)例綁定request對(duì)象,獲取的bean作為request的屬性session(用于web開(kāi)發(fā))創(chuàng)建的實(shí)例綁定session對(duì)象,獲取的bean作為session的屬性globalSession(用于分布式web開(kāi)發(fā))創(chuàng)建的實(shí)例綁定全局session對(duì)象,用于多個(gè)服務(wù)器間進(jìn)行數(shù)據(jù)共享,獲取的bean作為globalSession的屬性北京傳智播客教育Bean的生命周期Spring管理Bean實(shí)例的創(chuàng)建,通過(guò)配置的形式,設(shè)置兩個(gè)回調(diào)方法,供開(kāi)發(fā)者進(jìn)行實(shí)例創(chuàng)建與銷毀階段的操作<bean id="lifeBean"
init-method="init"
destroy-method="destroy"
class="cn.itcast.spring.lifecycle.LifeBean"></bean>init-method:設(shè)置bean初始化對(duì)象的回調(diào)方法destroy-method:設(shè)置bean銷毀對(duì)象的回調(diào)方法北京傳智播客教育Bean的生命周期對(duì)應(yīng)的Bean實(shí)體類中提供對(duì)應(yīng)的回調(diào)方法publicvoidinit(){ System.out.println("LifeBeaninit...");}publicvoiddestory(){ System.out.println("LifeBeandestory...");}回調(diào)方法的作用:針對(duì)當(dāng)前實(shí)例創(chuàng)建與銷毀時(shí),進(jìn)行資源的初始化與重置,或進(jìn)行資源的打開(kāi)與關(guān)閉等操作。北京傳智播客教育Bean的生命周期由于Bean的生命周期由Spring管理,Spring在沒(méi)有關(guān)閉其IoC容器前,將不銷毀所管理的Bean,因此必須將其手動(dòng)關(guān)閉才可以銷毀Spring所控制的Bean實(shí)例。ApplicationContext接口并不提供關(guān)閉操作,使用其子類對(duì)象ClassPathXmlApplicationContext進(jìn)行關(guān)閉操作。注意:銷毀操作只能用于單例的對(duì)象,即scope屬性為singletion的對(duì)象北京傳智播客教育Bean的屬性注入Spring支持使用兩種方式為Bean注入屬性構(gòu)造器注入setter注入(重點(diǎn))北京傳智播客教育構(gòu)造器注入Bean屬性Spring使用構(gòu)造器注入Bean屬性提供對(duì)應(yīng)參數(shù)的構(gòu)造器為Bean配置使用構(gòu)造器注入北京傳智播客教育setter注入Bean屬性(重點(diǎn))Spring使用屬性對(duì)應(yīng)的setter方法為屬性注入資源為屬性提供對(duì)應(yīng)的setter方法配置北京傳智播客教育setter注入Bean屬性(重點(diǎn))Spring注入引用類型的對(duì)象,必須保障該對(duì)象以Bean形式存在于IoC容器,受Spring控制為屬性提供對(duì)應(yīng)的setter方法配置北京傳智播客教育p命名空間——屬性注入的格式優(yōu)化Spring2.5引入全新的命名空間p,有效的簡(jiǎn)化了配置的內(nèi)容,縮短配置信息在約束信息中加入使用命名空間p屬性注入格式優(yōu)化常量屬性格式: p:<屬性名>=“屬性值”引用bean對(duì)象格式: p:<屬性名>-ref=“bean名稱”北京傳智播客教育p命名空間——屬性注入的格式優(yōu)化優(yōu)化前配置優(yōu)化后配置北京傳智播客教育SpEL——屬性注入的格式優(yōu)化Spring3.0引入全新的SpEL(SpringExpressionLanguage)Spring表達(dá)式語(yǔ)言,使用表達(dá)式語(yǔ)言可以使屬性注入格式進(jìn)行進(jìn)一步簡(jiǎn)化,同時(shí)支持包括對(duì)象注入、集合注入、集合訪問(wèn)、實(shí)例方法引用、靜態(tài)方法引用等多種格式。詳情參考《Spring_表達(dá)式語(yǔ)言.pdf》北京傳智播客教育SpEL——屬性注入的格式優(yōu)化所有格式統(tǒng)一使用value=“********”常量 #{10}#{3.14}#{2e5}#{‘itcast’}引用Bean #{beanId} 引用Bean屬性 #{beanIpertyName}引用Bean方法 beanId.methodName().method2()引用靜態(tài)方法 T(java.lang.Math).PI運(yùn)算符支持 #{3lt4==4ge3}正則表達(dá)式支持 #{matches‘[a-z]{6,}’}集合支持 #{likes[3]}北京傳智播客教育setter注入集合屬性(了解)Spring屬性注入還支持集合對(duì)象的使用,常見(jiàn)的集合對(duì)象注入如下List/數(shù)組SetMapProperties北京傳智播客教育setter注入集合List/數(shù)組Bean對(duì)象聲明集合/數(shù)組對(duì)象,提供對(duì)應(yīng)setter方法List集合與數(shù)組的配置格式通用北京傳智播客教育setter注入集合SetBean對(duì)象聲明Set集合對(duì)象,提供對(duì)應(yīng)setter方法北京傳智播客教育setter注入集合MapBean對(duì)象聲明Map集合對(duì)象,提供對(duì)應(yīng)setter方法簡(jiǎn)化格式北京傳智播客教育setter注入集合PropertiesBean對(duì)象聲明Properties對(duì)象,提供setter方法北京傳智播客教育團(tuán)隊(duì)開(kāi)發(fā)合作模式當(dāng)開(kāi)發(fā)人員過(guò)多時(shí),如果所有bean都配置到同一個(gè)配置文件applicationContext.xml中,會(huì)引起文件巨大,查找不方便的現(xiàn)象出現(xiàn)。Spring提供了團(tuán)隊(duì)開(kāi)發(fā)的xml配置格式將多個(gè)bean配置到不同的applicationContext.xml文件中文件名命名規(guī)范:applicationContext-功能模塊名.xmlapplicationContext-user.xmlapplicationContext-order.xmlapplicationContext-device.xml提供一個(gè)主配置文件將所有的公共bean配置到主配置文件中
applicationContext.xml北京傳智播客教育團(tuán)隊(duì)開(kāi)發(fā)合作模式——導(dǎo)入配置文件applicationContext-user.xmlapplicationContext.xml導(dǎo)入主配置文件Bean的屬性名北京傳智播客教育獲取多個(gè)xml配置對(duì)象獲取ApplicationContext對(duì)象時(shí),可是使用下列格式一次性加載多個(gè)XML文件格式一:使用import將多個(gè)配置文件導(dǎo)入到一個(gè)文件中,加載最終的配置文件ApplicationContextctx=newClassPathXmlApplicationContext("applicationContext-sub.xml");格式二:使用對(duì)象的參數(shù)傳遞多個(gè)配置文件名ApplicationContextctx=newClassPathXmlApplicationContext( "applicationContext-sub.xml","applicationContext.xml");格式三:使用對(duì)象的參數(shù)傳遞配置文件名數(shù)組ApplicationContextctx=newClassPathXmlApplicationContext( newString[]{"applicationContext-sub.xml","applicationContext.xml"});北京傳智播客教育團(tuán)隊(duì)開(kāi)發(fā)沖突問(wèn)題當(dāng)一個(gè)配置文件中導(dǎo)入了多個(gè)配置文件,有可能引發(fā)bean的名稱定義沖突問(wèn)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年籃球運(yùn)動(dòng)場(chǎng)地安全設(shè)施安裝與檢修合同3篇
- 2025版土地整治工程土方運(yùn)輸居間代理協(xié)議3篇
- 2025版教育培訓(xùn)投資入股合同范本大全3篇
- 2025年度個(gè)人與個(gè)人車輛購(gòu)置借款合同2篇
- 2025版教職工宿舍分配與使用管理合同3篇
- 二零二五版留置車輛維修工程借款協(xié)議4篇
- 2024金融科技支付系統(tǒng)集成與運(yùn)營(yíng)合同
- 二零二五年度體育賽事官方運(yùn)動(dòng)服贊助合同示例3篇
- 渣土運(yùn)輸及循環(huán)經(jīng)濟(jì)承包合同(二零二五年度)3篇
- 2025年達(dá)人帶貨直播平臺(tái)合作協(xié)議書(shū)2篇
- 2024企業(yè)答謝晚宴會(huì)務(wù)合同3篇
- 電氣工程及其自動(dòng)化專業(yè)《畢業(yè)設(shè)計(jì)(論文)及答辯》教學(xué)大綱
- 《客艙安全管理與應(yīng)急處置》課件-第14講 應(yīng)急撤離
- 中華人民共和國(guó)文物保護(hù)法
- 節(jié)前物業(yè)安全培訓(xùn)
- 阿里巴巴國(guó)際站:2024年珠寶眼鏡手表及配飾行業(yè)報(bào)告
- 高甘油三酯血癥相關(guān)的器官損傷
- 手術(shù)室護(hù)士考試題及答案
- 牙膏項(xiàng)目創(chuàng)業(yè)計(jì)劃書(shū)
- 單位食堂供餐方案
- DB42-T 2204-2024 湖沼濕地溫室氣體通量監(jiān)測(cè)技術(shù)規(guī)范
評(píng)論
0/150
提交評(píng)論