中午源碼共享2-03bean配置_第1頁
中午源碼共享2-03bean配置_第2頁
中午源碼共享2-03bean配置_第3頁
中午源碼共享2-03bean配置_第4頁
中午源碼共享2-03bean配置_第5頁
免費預覽已結束,剩余26頁可下載查看

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

北京傳智播客教育Bean配置(XML)李若亮北京傳智播客教育Bean的初始化方式Spring提供三種方式初始化Bean對象類構造器初始化(主流)靜態工廠方法初始化(非主流)實例工廠方法初始化(非主流)北京傳智播客教育類構造器初始化Spring讀取加載的Bean的class,調用對應class的無參構造方法,實例化對象如果沒有提供無參構造方法,Spring將無法初始化Bean實例applicationContext.xml中配置對應的Bean <beanid="bean1"class="cn.itcast.spring.beanInit.Bean1"></bean>獲取Bean對象使用ApplicationContext對象進行ApplicationContextctx=new ClassPathXmlApplicationContext("applicationContext.xml");Bean1bean1=(Bean1)ctx.getBean(“bean1");北京傳智播客教育靜態工廠初始化(了解)靜態工廠初始化方法是為了兼容早期項目的改造,目前已經基本不使用此方式獲取Bean實例Bean實例的獲取需要使用工廠類中的靜態方法獲取提供工廠類,包含靜態方法獲取Bean實例publicclassBean2Factory{publicstaticBean2getInst(){ returnnewBean2();}}北京傳智播客教育靜態工廠初始化(了解)applicationContext.xml中配置對應的Bean<beanid="bean2"

class="cn.itcast.spring.beanInit.Bean2Factory"

factory-method="getInst"></bean>class:配置工廠類的全路徑名factory-method:配置工廠類獲取實例的靜態方法名獲取Bean對象使用ApplicationContext對象進行ApplicationContextctx=new ClassPathXmlApplicationContext("applicationContext.xml");Bean2bean2=(Bean2)ctx.getBean(“bean2");北京傳智播客教育實例工廠初始化(了解)Bean實例的獲取需要使用工廠類中的實例方法獲取提供工廠類,包含實例方法獲取Bean實例publicclassBean3Factory{publicBean3getInst(){ returnnewBean3();}}由于使用實例工廠需要先創建實例工廠的對象,因此在配置時,實例工廠將作為一個Bean出現,受Spring控制,配置實例工廠的Bean<beanid="bean3Factory"class="cn.itcast.spring.beanInit.Bean3Factory"></bean>北京傳智播客教育實例工廠初始化(了解)applicationContext.xml中配置對應的Bean<beanid="bean3"

factory-bean=“bean3Factory”

factory-method="getInst"></bean>factory-bean:配置實例工廠Bean的名稱factory-method:配置實例工廠類獲取實例的方法名獲取Bean對象使用ApplicationContext對象進行ApplicationContextctx=new ClassPathXmlApplicationContext("applicationContext.xml");Bean3bean3=(Bean3)ctx.getBean(“bean3");創建多個北京傳智播客教育Bean的作用域Spring中的Bean默認創造出的對象是同一個,也就是單例的,通過修改bean元素的scope屬性可以控制創建出的實例的作用域<beanid="beanScope"

scope="singleton" class="cn.itcast.spring.scope.Bean1"></bean>scope的取值可以使用如下值singletonprototyperequestsession/globalSession北京傳智播客教育Bean的作用域Bean的5種作用域singleton(默認)(常用)創建出的實例為單例模式,在IoC容器中唯一prototype(常用)創建出的實例為非單例模式,每次獲取bean得到新對象request(用于web開發)創建的實例綁定request對象,獲取的bean作為request的屬性session(用于web開發)創建的實例綁定session對象,獲取的bean作為session的屬性globalSession(用于分布式web開發)創建的實例綁定全局session對象,用于多個服務器間進行數據共享,獲取的bean作為globalSession的屬性北京傳智播客教育Bean的生命周期Spring管理Bean實例的創建,通過配置的形式,設置兩個回調方法,供開發者進行實例創建與銷毀階段的操作<bean id="lifeBean"

init-method="init"

destroy-method="destroy"

class="cn.itcast.spring.lifecycle.LifeBean"></bean>init-method:設置bean初始化對象的回調方法destroy-method:設置bean銷毀對象的回調方法北京傳智播客教育Bean的生命周期對應的Bean實體類中提供對應的回調方法publicvoidinit(){ System.out.println("LifeBeaninit...");}publicvoiddestory(){ System.out.println("LifeBeandestory...");}回調方法的作用:針對當前實例創建與銷毀時,進行資源的初始化與重置,或進行資源的打開與關閉等操作。北京傳智播客教育Bean的生命周期由于Bean的生命周期由Spring管理,Spring在沒有關閉其IoC容器前,將不銷毀所管理的Bean,因此必須將其手動關閉才可以銷毀Spring所控制的Bean實例。ApplicationContext接口并不提供關閉操作,使用其子類對象ClassPathXmlApplicationContext進行關閉操作。注意:銷毀操作只能用于單例的對象,即scope屬性為singletion的對象北京傳智播客教育Bean的屬性注入Spring支持使用兩種方式為Bean注入屬性構造器注入setter注入(重點)北京傳智播客教育構造器注入Bean屬性Spring使用構造器注入Bean屬性提供對應參數的構造器為Bean配置使用構造器注入北京傳智播客教育setter注入Bean屬性(重點)Spring使用屬性對應的setter方法為屬性注入資源為屬性提供對應的setter方法配置北京傳智播客教育setter注入Bean屬性(重點)Spring注入引用類型的對象,必須保障該對象以Bean形式存在于IoC容器,受Spring控制為屬性提供對應的setter方法配置北京傳智播客教育p命名空間——屬性注入的格式優化Spring2.5引入全新的命名空間p,有效的簡化了配置的內容,縮短配置信息在約束信息中加入使用命名空間p屬性注入格式優化常量屬性格式: p:<屬性名>=“屬性值”引用bean對象格式: p:<屬性名>-ref=“bean名稱”北京傳智播客教育p命名空間——屬性注入的格式優化優化前配置優化后配置北京傳智播客教育SpEL——屬性注入的格式優化Spring3.0引入全新的SpEL(SpringExpressionLanguage)Spring表達式語言,使用表達式語言可以使屬性注入格式進行進一步簡化,同時支持包括對象注入、集合注入、集合訪問、實例方法引用、靜態方法引用等多種格式。詳情參考《Spring_表達式語言.pdf》北京傳智播客教育SpEL——屬性注入的格式優化所有格式統一使用value=“********”常量 #{10}#{3.14}#{2e5}#{‘itcast’}引用Bean #{beanId} 引用Bean屬性 #{beanIpertyName}引用Bean方法 beanId.methodName().method2()引用靜態方法 T(java.lang.Math).PI運算符支持 #{3lt4==4ge3}正則表達式支持 #{matches‘[a-z]{6,}’}集合支持 #{likes[3]}北京傳智播客教育setter注入集合屬性(了解)Spring屬性注入還支持集合對象的使用,常見的集合對象注入如下List/數組SetMapProperties北京傳智播客教育setter注入集合List/數組Bean對象聲明集合/數組對象,提供對應setter方法List集合與數組的配置格式通用北京傳智播客教育setter注入集合SetBean對象聲明Set集合對象,提供對應setter方法北京傳智播客教育setter注入集合MapBean對象聲明Map集合對象,提供對應setter方法簡化格式北京傳智播客教育setter注入集合PropertiesBean對象聲明Properties對象,提供setter方法北京傳智播客教育團隊開發合作模式當開發人員過多時,如果所有bean都配置到同一個配置文件applicationContext.xml中,會引起文件巨大,查找不方便的現象出現。Spring提供了團隊開發的xml配置格式將多個bean配置到不同的applicationContext.xml文件中文件名命名規范:applicationContext-功能模塊名.xmlapplicationContext-user.xmlapplicationContext-order.xmlapplicationContext-device.xml提供一個主配置文件將所有的公共bean配置到主配置文件中

applicationContext.xml北京傳智播客教育團隊開發合作模式——導入配置文件applicationContext-user.xmlapplicationContext.xml導入主配置文件Bean的屬性名北京傳智播客教育獲取多個xml配置對象獲取ApplicationContext對象時,可是使用下列格式一次性加載多個XML文件格式一:使用import將多個配置文件導入到一個文件中,加載最終的配置文件ApplicationContextctx=newClassPathXmlApplicationContext("applicationContext-sub.xml");格式二:使用對象的參數傳遞多個配置文件名ApplicationContextctx=newClassPathXmlApplicationContext( "applicationContext-sub.xml","applicationContext.xml");格式三:使用對象的參數傳遞配置文件名數組ApplicationContextctx=newClassPathXmlApplicationContext( newString[]{"applicationContext-sub.xml","applicationContext.xml"});北京傳智播客教育團隊開發沖突問題當一個配置文件中導入了多個配置文件,有可能引發bean的名稱定義沖突問

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論