中午源碼共享2-03bean配置_第1頁
中午源碼共享2-03bean配置_第2頁
中午源碼共享2-03bean配置_第3頁
中午源碼共享2-03bean配置_第4頁
中午源碼共享2-03bean配置_第5頁
已閱讀5頁,還剩26頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(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的無參構(gòu)造方法,實(shí)例化對(duì)象如果沒有提供無參構(gòu)造方法,Spring將無法初始化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è),也就是單例的,通過修改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開發(fā))創(chuàng)建的實(shí)例綁定request對(duì)象,獲取的bean作為request的屬性session(用于web開發(fā))創(chuàng)建的實(shí)例綁定session對(duì)象,獲取的bean作為session的屬性globalSession(用于分布式web開發(fā))創(chuàng)建的實(shí)例綁定全局session對(duì)象,用于多個(gè)服務(wù)器間進(jìn)行數(shù)據(jù)共享,獲取的bean作為globalSession的屬性北京傳智播客教育Bean的生命周期Spring管理Bean實(shí)例的創(chuàng)建,通過配置的形式,設(shè)置兩個(gè)回調(diào)方法,供開發(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)行資源的打開與關(guān)閉等操作。北京傳智播客教育Bean的生命周期由于Bean的生命周期由Spring管理,Spring在沒有關(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á)式語言,使用表達(dá)式語言可以使屬性注入格式進(jìn)行進(jìn)一步簡(jiǎn)化,同時(shí)支持包括對(duì)象注入、集合注入、集合訪問、實(shí)例方法引用、靜態(tài)方法引用等多種格式。詳情參考《Spring_表達(dá)式語言.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ì)象的使用,常見的集合對(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ì)開發(fā)合作模式當(dāng)開發(fā)人員過多時(shí),如果所有bean都配置到同一個(gè)配置文件applicationContext.xml中,會(huì)引起文件巨大,查找不方便的現(xiàn)象出現(xiàn)。Spring提供了團(tuán)隊(duì)開發(fā)的xml配置格式將多個(gè)bean配置到不同的applicationContext.xml文件中文件名命名規(guī)范:applicationContext-功能模塊名.xmlapplicationContext-user.xmlapplicationContext-order.xmlapplicationContext-device.xml提供一個(gè)主配置文件將所有的公共bean配置到主配置文件中

applicationContext.xml北京傳智播客教育團(tuán)隊(duì)開發(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ì)開發(fā)沖突問題當(dāng)一個(gè)配置文件中導(dǎo)入了多個(gè)配置文件,有可能引發(fā)bean的名稱定義沖突問

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論