版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
JavaSpringSpring的基本使Spring容器對(duì)Bean組件的DI問(wèn)如何構(gòu)建Spring工程和Spring容器的初始化方項(xiàng)目結(jié)構(gòu)圖,如圖-1所示圖-新建項(xiàng)目拷貝Jar包到項(xiàng)目下(共2個(gè)spring.jar是的Jar包; 包還需要記錄日志 mons-logging.jar包的支持圖-修改applicationContext.xml,將各種組件(Bean)納入到Spring的管理中<?xmlversion="1.0"encoding="UTF-""""""新建FeeDAO接口,模擬向Fee表添加和更新數(shù)據(jù)publicinterfaceFeeDAOpublicvoidpublicvoid}新建JdbcFeeDAO,模擬實(shí)現(xiàn)FeeDAO接口
packagepublicclassJdbcFeeDAOimplementsFeeDAO{publicJdbcFeeDAO(){System.out.println("------創(chuàng)建 }publicvoid System.out.println("采用JDBC方式將資費(fèi)信息寫(xiě)入表 publicvoidSystem.out.println("采用JDBC方式將資費(fèi)信息更新表 修改applicationContext.xml,實(shí)例化JdbcFeeDAOspring<?xmlversion="1.0"encoding="UTF-""""""<beanid="feeDAO" 新建測(cè)試類Test1類,使用ClassPathXmlApplicationContext初始化Spring容器,并獲feeDAOpackageimportimportorg.springframework.context.support.ClassPathXmlApplicationContext;importtarena.dao.FeeDAO;publicclassTest1publicstaticvoidmain(String[]args)Stringconf"applicationContext.xml";ApplicationContextac=newFeeDAOfeeDao=//使用}}Spring通過(guò)BeanFactory管理和配置beanSpring里,任何的java對(duì)象、java組件都被當(dāng)成BeanFactory創(chuàng)建并負(fù)責(zé)管理Springbean的上下文的生命周期。并建立對(duì)象之間的依賴性,org.springframework.beans.factory.xml.XmlBeanFactory是BeanFactory實(shí)現(xiàn)類,在時(shí),必須提供Spring容器管理bean的詳細(xì)配置信息,相應(yīng)的XML文件作為參運(yùn)行Test1類,控制臺(tái)輸出結(jié)果如------創(chuàng)建FeeDAO采用JDBC方式將資費(fèi)信息更新從控制的輸出結(jié)果可以看出,實(shí)例化對(duì)象的時(shí)候調(diào)用了FeeDAO的構(gòu)造方法實(shí)FeeDAO接口代碼如publicinterfaceFeeDAOpublicvoidpublicvoid}隱JdbcFeeDAO類代碼如下packagepublicclassJdbcFeeDAOimplementsFeeDAOpublicSystem.out.println("------創(chuàng)建 }publicvoidSystem.out.println("采用JDBC方式將資費(fèi)信息寫(xiě)入}publicvoidSystem.out.println("采用JDBC方式將資費(fèi)信息更新}}隱applicationContext.xml代碼如下<?xml<beansencoding="UTF-""""""<beanid="feeDAO"packageimportimportorg.springframework.context.support.ClassPathXmlApplicationContext;importtarena.dao.FeeDAO;publicclassTest1publicstaticvoidmain(String[]args)Stringconf"applicationContext.xml";ApplicationContextac=new//通過(guò)spring容器獲取定義的Bean對(duì)FeeDAOfeeDao=}}隱擴(kuò)問(wèn)Bean對(duì)象的創(chuàng)建時(shí)機(jī),Bean對(duì)象的創(chuàng)建模式以及Bean對(duì)象初始化和銷毀方使用spring01工程Bean對(duì)象的創(chuàng)建添加Junit的jar包。點(diǎn)中工程spring01右鍵—Properties--JavaBuildPath--Libraries,如點(diǎn)擊AddLibrary,如圖-4所示
圖-選擇Junit,如圖-5所
圖-點(diǎn)擊Next,如圖-6所
圖-選擇JUnit4,如圖-7所示
圖-圖-點(diǎn)擊Finish,在工程加入了Junit4的就jar包,如圖-8圖-新建Test2類,創(chuàng)建測(cè)試方法test1,創(chuàng)建Spring容器實(shí)例packageimportimportimportimportpublicclassTest2//測(cè)試對(duì)象創(chuàng)建時(shí)publicvoidStringconf="applicationContext.xml";ApplicationContextac=new}}點(diǎn)開(kāi)Test2類,選中test1方--右鍵--RunAs--JunitTest,這樣就可以運(yùn)行test1方法}運(yùn)行結(jié)果,控制臺(tái)輸出結(jié)果如圖-10所示
圖-圖-控制臺(tái)打印結(jié)果顯示,默認(rèn)情況下FeeDAO在Spring容器被創(chuàng)建時(shí)就會(huì)被創(chuàng)建。通過(guò)修改配置文件屬性參數(shù),可以改變Spring容器創(chuàng)建對(duì)象的時(shí)applicationContext.xml<beanid="feeDAO"class="tarena.dao.JdbcFeeDAO"lazy-運(yùn)行test1方圖-測(cè)試:當(dāng)MyBean對(duì)象被調(diào)用時(shí),MyBean修改test1方//測(cè)試對(duì)象創(chuàng)建時(shí)publicvoidStringconf="applicationContext.xml";ApplicationContextac=newFeeDAOfeeDao=}運(yùn)行test1方法圖-Bean對(duì)象的創(chuàng)建修改Test2類,添加test2方法//測(cè)試scope屬publicvoidStringconf="applicationContext.xml";ApplicationContextac=newFeeDAOfeeDao1=FeeDAOfeeDao2=(FeeDAO)}運(yùn)行test2方法,控制臺(tái)輸出結(jié)果如圖-13所示圖-使用單例模式有風(fēng)險(xiǎn),風(fēng)險(xiǎn)在于多線程并發(fā)時(shí)會(huì)有一些狀況修改applicationContext.xml,設(shè)置創(chuàng)建bean的模式為原型模式(prototype)即可以<beanid="feeDAO"class="tarena.dao.JdbcFeeDAO"lazy-init="true"scope屬性的取值介
圖-在web(僅限于web項(xiàng)目)環(huán)境中,還可以設(shè)置所創(chuàng)建的bean對(duì)象的生命周期和requestsessiona.request表示bean對(duì)象生命周期和request生命周期相b.session表示bean對(duì)象生命周期和session生命周期相c.globalsession當(dāng)于applicationd.singleton單例模式totype原型模Bean對(duì)象的初始化和銷init-method屬性用于指定初始化方 packagepublicclassJdbcFeeDAOimplementsFeeDAOpublicvoidSystem.out.println("------進(jìn)行init初始 publicvoidSystem.out.println("------銷毀 publicSystem.out.println("------創(chuàng)建 publicvoidSystem.out.println("采用JDBC方式將資費(fèi)信息寫(xiě)入 publicvoidSystem.out.println("采用JDBC方式將資費(fèi)信息更新 修改applicationContext.xml,希望在bean對(duì)象創(chuàng)建后自動(dòng)調(diào)用myinit()方<beanid="feeDAO"lazy-init="true"scope="prototype"init-publicvoidStringconf="applicationContext.xml";ApplicationContextac=newFeeDAOfeeDao1=(FeeDAO)}執(zhí)行test2方法,自定義的初始化的方法在對(duì)象被創(chuàng)建后調(diào)用,如圖-15所圖-<beanid="feeDAO"lazy-init="true"init-method="myinit"destroy-修改test2方法,關(guān)閉ApplicationContext//測(cè)試scope屬publicvoidStringconf=ApplicationContextacnewClassPathXmlApplicationContext(conf);FeeDAOfeeDao1=(FeeDAO)}運(yùn)行test2方法,如圖-16所示圖-我們發(fā)現(xiàn)沒(méi)有打印預(yù)期的“------銷毀 ”的結(jié)果。原因在修改<beanid="feeDAO"lazy-init="true"init-method="myinit"destroy-運(yùn)行test2方法,控制臺(tái)輸出了“------銷毀 ”,如圖-17所示圖-實(shí)Test2類代碼如下packageimportimportimportimportpublicclassTest2//測(cè)試對(duì)象創(chuàng)建時(shí)publicvoidStringconf="applicationContext.xml";ApplicationContextac=newFeeDAOfeeDao=}//測(cè)試scope屬publicvoidStringconf="applicationContext.xml";ApplicationContextac=new隱FeeDAOfeeDao1=FeeDAOfeeDao2=}}JdbcFeeDAO類代碼如下packagepublicclassJdbcFeeDAOimplementsFeeDAOpublicvoidSystem.out.println("------進(jìn)行init初始 }publicvoidSystem.out.println("------銷毀 }publicSystem.out.println("------創(chuàng)建 }publicvoidSystem.out.println("采用JDBC方式將資費(fèi)信息寫(xiě)入}publicpublicvoidSystem.out.println("采用JDBC方式將資費(fèi)信息更新表}}隱<?xmlversion="1.0"encoding="UTF-""""""<beanid="feeDAO"lazy-init="true"init-method="myinit"destroy-隱擴(kuò)DI問(wèn)在Spring中注入方式的應(yīng)用方使用spring01工程setter方法注新建HibernateFeeDAO,模擬Hibernate實(shí)現(xiàn)費(fèi)用的保存和更packagepublicclassHibernateFeeDAOimplementspublicvoidsave()System.out.println("采用Hibernate將資費(fèi)信息寫(xiě)入數(shù)據(jù)表}publicvoidupdate()System.out.println("采用Hibernate將資費(fèi)信息更新數(shù)據(jù)表}}FeeServiceImpl類,該類中調(diào)用FeeDAO的save方法packageimportpublicclassFeeServiceImpl//采用setter方式注入privateFeeDAOfeeDao;publicvoidsetFeeDao(FeeDAO{this.feeDao=}publicSystem.out.println("-----創(chuàng)建service對(duì) }public添加");feeDao.save();}}修}}<?xmlversion="1.0"encoding="UTF-<beans <beanid="feeDAO"lazy-init="true"init-method="myinit"destroy-<!-<beanid="feeDAO"init-destroy-method="mydestroy"lazy---<beanid="feeDAO1"<beanid="feeService"<!--定義DI依賴注入關(guān)系<propertyname="feeDao"packageimport import importpublicclass{ *測(cè)試IOC依賴注*@parampublicstaticvoidmain(String[]args)Stringconf=ApplicationContextacnew//獲取容器中的FeeServiceImplservice= 運(yùn)行Test3,控制臺(tái)說(shuō)出結(jié)果如圖-18所示。調(diào)用到了HibernateFeeDAO類的savefeeDao注入值成功圖-構(gòu)造方式注新建FeeServiceImpl1,使用構(gòu)造方法給feeDao注入值packageimportpublicclassFeeServiceImpl1//采用setter方式注入privateFeeDAOfeeDao;publicFeeServiceImpl1(FeeDAOfeeDao){this.feeDao=feeDao;}publicvoid}}修改<?xmlversion="1.0"encoding="UTF-<beans <beanid="feeDAO"lazy-init="true"init-method="myinit"destroy-<beanid="feeDAO1"<beanid="feeService"<!--定義DI依賴注入關(guān)系<propertyname="feeDao"<beanid="feeService1"<!--定義DI依賴注入關(guān)系<constructor-argindex="0"</constructor-新建packageimport import importpublicclass{ *測(cè)試IOC依賴注*@parampublicstaticvoidmain(String[]args)Stringconf=ApplicationContextacnew//獲取容器中的FeeServiceImpl1service= 運(yùn)行Test4,如圖-19所示。調(diào)用到了HibernateFeeDAO類的save方法,給feeDao注入值功圖-該如何選擇使用set方式注入還是構(gòu)造方式注實(shí)HibernateFeeDAO類代碼如下packagepublicclassHibernateFeeDAOimplementspublicvoidsave()System.out.println("采用Hibernate將資費(fèi)信息寫(xiě)入數(shù)據(jù)表}publicvoidupdate()System.out.println("采用Hibernate將資費(fèi)信息更新數(shù)據(jù)表}}隱FeeServiceImpl類代碼實(shí)現(xiàn)如下packageimportpublicpublicclassFeeServiceImpl//采用setter方式注入privateFeeDAOfeeDao;publicvoidsetFeeDao(FeeDAO{this.feeDao=}publicSystem.out.println("-----創(chuàng)建service對(duì) }public
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 《硫酸工藝學(xué)》課件
- 二尿素裝置安全課課件
- 《燒傷基礎(chǔ)知識(shí)》課件
- 《湖南鄉(xiāng)土地理》課件
- 《孕婦學(xué)校講課》課件
- 單位管理制度集合大合集職工管理
- 單位管理制度集粹匯編人員管理篇十篇
- 單位管理制度分享匯編【人力資源管理篇】十篇
- 單位管理制度分享大全職員管理篇十篇
- 2024教師安全責(zé)任協(xié)議書(shū)(28篇)
- 安徽省合肥市包河區(qū)2023-2024學(xué)年三年級(jí)上學(xué)期語(yǔ)文期末試卷
- 河北省保定市定興縣2023-2024學(xué)年一年級(jí)上學(xué)期期末調(diào)研數(shù)學(xué)試題(含答案)
- 2024版食源性疾病培訓(xùn)完整課件
- 2025年中國(guó)蛋糕行業(yè)市場(chǎng)規(guī)模及發(fā)展前景研究報(bào)告(智研咨詢發(fā)布)
- 護(hù)理組長(zhǎng)年底述職報(bào)告
- 護(hù)理不良事件分析 課件
- 巨量引擎合同范本
- 糖尿病患者健康管理測(cè)試試題(三套題-有答案)
- 《住院患者身體約束的護(hù)理》團(tuán)體標(biāo)準(zhǔn)解讀課件
- 市場(chǎng)營(yíng)銷原理與實(shí)務(wù)學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
- 英語(yǔ)四級(jí)語(yǔ)法備戰(zhàn) 不定式大總結(jié)
評(píng)論
0/150
提交評(píng)論