




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
JavaSpringSpring的基本使Spring容器對Bean組件的DI問如何構建Spring工程和Spring容器的初始化方項目結構圖,如圖-1所示圖-新建項目拷貝Jar包到項目下(共2個spring.jar是的Jar包; 包還需要記錄日志 mons-logging.jar包的支持圖-修改applicationContext.xml,將各種組件(Bean)納入到Spring的管理中<?xmlversion="1.0"encoding="UTF-""""""新建FeeDAO接口,模擬向Fee表添加和更新數(shù)據(jù)publicinterfaceFeeDAOpublicvoidpublicvoid}新建JdbcFeeDAO,模擬實現(xiàn)FeeDAO接口
packagepublicclassJdbcFeeDAOimplementsFeeDAO{publicJdbcFeeDAO(){System.out.println("------創(chuàng)建 }publicvoid System.out.println("采用JDBC方式將資費信息寫入表 publicvoidSystem.out.println("采用JDBC方式將資費信息更新表 修改applicationContext.xml,實例化JdbcFeeDAOspring<?xmlversion="1.0"encoding="UTF-""""""<beanid="feeDAO" 新建測試類Test1類,使用ClassPathXmlApplicationContext初始化Spring容器,并獲feeDAOpackageimportimportorg.springframework.context.support.ClassPathXmlApplicationContext;importtarena.dao.FeeDAO;publicclassTest1publicstaticvoidmain(String[]args)Stringconf"applicationContext.xml";ApplicationContextac=newFeeDAOfeeDao=//使用}}Spring通過BeanFactory管理和配置beanSpring里,任何的java對象、java組件都被當成BeanFactory創(chuàng)建并負責管理Springbean的上下文的生命周期。并建立對象之間的依賴性,org.springframework.beans.factory.xml.XmlBeanFactory是BeanFactory實現(xiàn)類,在時,必須提供Spring容器管理bean的詳細配置信息,相應的XML文件作為參運行Test1類,控制臺輸出結果如------創(chuàng)建FeeDAO采用JDBC方式將資費信息更新從控制的輸出結果可以看出,實例化對象的時候調用了FeeDAO的構造方法實FeeDAO接口代碼如publicinterfaceFeeDAOpublicvoidpublicvoid}隱JdbcFeeDAO類代碼如下packagepublicclassJdbcFeeDAOimplementsFeeDAOpublicSystem.out.println("------創(chuàng)建 }publicvoidSystem.out.println("采用JDBC方式將資費信息寫入}publicvoidSystem.out.println("采用JDBC方式將資費信息更新}}隱applicationContext.xml代碼如下<?xml<beansencoding="UTF-""""""<beanid="feeDAO"packageimportimportorg.springframework.context.support.ClassPathXmlApplicationContext;importtarena.dao.FeeDAO;publicclassTest1publicstaticvoidmain(String[]args)Stringconf"applicationContext.xml";ApplicationContextac=new//通過spring容器獲取定義的Bean對FeeDAOfeeDao=}}隱擴問Bean對象的創(chuàng)建時機,Bean對象的創(chuàng)建模式以及Bean對象初始化和銷毀方使用spring01工程Bean對象的創(chuàng)建添加Junit的jar包。點中工程spring01右鍵—Properties--JavaBuildPath--Libraries,如點擊AddLibrary,如圖-4所示
圖-選擇Junit,如圖-5所
圖-點擊Next,如圖-6所
圖-選擇JUnit4,如圖-7所示
圖-圖-點擊Finish,在工程加入了Junit4的就jar包,如圖-8圖-新建Test2類,創(chuàng)建測試方法test1,創(chuàng)建Spring容器實例packageimportimportimportimportpublicclassTest2//測試對象創(chuàng)建時publicvoidStringconf="applicationContext.xml";ApplicationContextac=new}}點開Test2類,選中test1方--右鍵--RunAs--JunitTest,這樣就可以運行test1方法}運行結果,控制臺輸出結果如圖-10所示
圖-圖-控制臺打印結果顯示,默認情況下FeeDAO在Spring容器被創(chuàng)建時就會被創(chuàng)建。通過修改配置文件屬性參數(shù),可以改變Spring容器創(chuàng)建對象的時applicationContext.xml<beanid="feeDAO"class="tarena.dao.JdbcFeeDAO"lazy-運行test1方圖-測試:當MyBean對象被調用時,MyBean修改test1方//測試對象創(chuàng)建時publicvoidStringconf="applicationContext.xml";ApplicationContextac=newFeeDAOfeeDao=}運行test1方法圖-Bean對象的創(chuàng)建修改Test2類,添加test2方法//測試scope屬publicvoidStringconf="applicationContext.xml";ApplicationContextac=newFeeDAOfeeDao1=FeeDAOfeeDao2=(FeeDAO)}運行test2方法,控制臺輸出結果如圖-13所示圖-使用單例模式有風險,風險在于多線程并發(fā)時會有一些狀況修改applicationContext.xml,設置創(chuàng)建bean的模式為原型模式(prototype)即可以<beanid="feeDAO"class="tarena.dao.JdbcFeeDAO"lazy-init="true"scope屬性的取值介
圖-在web(僅限于web項目)環(huán)境中,還可以設置所創(chuàng)建的bean對象的生命周期和requestsessiona.request表示bean對象生命周期和request生命周期相b.session表示bean對象生命周期和session生命周期相c.globalsession當于applicationd.singleton單例模式totype原型模Bean對象的初始化和銷init-method屬性用于指定初始化方 packagepublicclassJdbcFeeDAOimplementsFeeDAOpublicvoidSystem.out.println("------進行init初始 publicvoidSystem.out.println("------銷毀 publicSystem.out.println("------創(chuàng)建 publicvoidSystem.out.println("采用JDBC方式將資費信息寫入 publicvoidSystem.out.println("采用JDBC方式將資費信息更新 修改applicationContext.xml,希望在bean對象創(chuàng)建后自動調用myinit()方<beanid="feeDAO"lazy-init="true"scope="prototype"init-publicvoidStringconf="applicationContext.xml";ApplicationContextac=newFeeDAOfeeDao1=(FeeDAO)}執(zhí)行test2方法,自定義的初始化的方法在對象被創(chuàng)建后調用,如圖-15所圖-<beanid="feeDAO"lazy-init="true"init-method="myinit"destroy-修改test2方法,關閉ApplicationContext//測試scope屬publicvoidStringconf=ApplicationContextacnewClassPathXmlApplicationContext(conf);FeeDAOfeeDao1=(FeeDAO)}運行test2方法,如圖-16所示圖-我們發(fā)現(xiàn)沒有打印預期的“------銷毀 ”的結果。原因在修改<beanid="feeDAO"lazy-init="true"init-method="myinit"destroy-運行test2方法,控制臺輸出了“------銷毀 ”,如圖-17所示圖-實Test2類代碼如下packageimportimportimportimportpublicclassTest2//測試對象創(chuàng)建時publicvoidStringconf="applicationContext.xml";ApplicationContextac=newFeeDAOfeeDao=}//測試scope屬publicvoidStringconf="applicationContext.xml";ApplicationContextac=new隱FeeDAOfeeDao1=FeeDAOfeeDao2=}}JdbcFeeDAO類代碼如下packagepublicclassJdbcFeeDAOimplementsFeeDAOpublicvoidSystem.out.println("------進行init初始 }publicvoidSystem.out.println("------銷毀 }publicSystem.out.println("------創(chuàng)建 }publicvoidSystem.out.println("采用JDBC方式將資費信息寫入}publicpublicvoidSystem.out.println("采用JDBC方式將資費信息更新表}}隱<?xmlversion="1.0"encoding="UTF-""""""<beanid="feeDAO"lazy-init="true"init-method="myinit"destroy-隱擴DI問在Spring中注入方式的應用方使用spring01工程setter方法注新建HibernateFeeDAO,模擬Hibernate實現(xiàn)費用的保存和更packagepublicclassHibernateFeeDAOimplementspublicvoidsave()System.out.println("采用Hibernate將資費信息寫入數(shù)據(jù)表}publicvoidupdate()System.out.println("采用Hibernate將資費信息更新數(shù)據(jù)表}}FeeServiceImpl類,該類中調用FeeDAO的save方法packageimportpublicclassFeeServiceImpl//采用setter方式注入privateFeeDAOfeeDao;publicvoidsetFeeDao(FeeDAO{this.feeDao=}publicSystem.out.println("-----創(chuàng)建service對 }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依賴注入關系<propertyname="feeDao"packageimport import importpublicclass{ *測試IOC依賴注*@parampublicstaticvoidmain(String[]args)Stringconf=ApplicationContextacnew//獲取容器中的FeeServiceImplservice= 運行Test3,控制臺說出結果如圖-18所示。調用到了HibernateFeeDAO類的savefeeDao注入值成功圖-構造方式注新建FeeServiceImpl1,使用構造方法給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依賴注入關系<propertyname="feeDao"<beanid="feeService1"<!--定義DI依賴注入關系<constructor-argindex="0"</constructor-新建packageimport import importpublicclass{ *測試IOC依賴注*@parampublicstaticvoidmain(String[]args)Stringconf=ApplicationContextacnew//獲取容器中的FeeServiceImpl1service= 運行Test4,如圖-19所示。調用到了HibernateFeeDAO類的save方法,給feeDao注入值功圖-該如何選擇使用set方式注入還是構造方式注實HibernateFeeDAO類代碼如下packagepublicclassHibernateFeeDAOimplementspublicvoidsave()System.out.println("采用Hibernate將資費信息寫入數(shù)據(jù)表}publicvoidupdate()System.out.println("采用Hibernate將資費信息更新數(shù)據(jù)表}}隱FeeServiceImpl類代碼實現(xiàn)如下packageimportpublicpublicclassFeeServiceImpl//采用setter方式注入privateFeeDAOfeeDao;publicvoidsetFeeDao(FeeDAO{this.feeDao=}publicSystem.out.println("-----創(chuàng)建service對 }public
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 清遠市連南瑤族自治縣2024-2025學年數(shù)學四下期末達標檢測模擬試題含解析
- 貴州職業(yè)技術學院《商貿英語函電》2023-2024學年第二學期期末試卷
- 重慶大學《武術(主修三)》2023-2024學年第二學期期末試卷
- 錦州醫(yī)科大學醫(yī)療學院《單片機原理及應用(實驗)》2023-2024學年第二學期期末試卷
- 半掛車項目策劃方案
- 蒲城縣2024-2025學年六年級下學期小升初數(shù)學考前押題卷含解析
- 湖北汽車工業(yè)學院《電力系統(tǒng)自動裝置》2023-2024學年第二學期期末試卷
- 2025屆貴州省六盤水市六枝特區(qū)七中高三第四次大聯(lián)考化學試題含解析
- 山西省呂梁地區(qū)交口縣2025年三下數(shù)學期末教學質量檢測模擬試題含解析
- 免疫規(guī)劃工作督導計劃
- 兒童之家工作計劃
- 2025年高考英語外刊時文閱讀訓練專題12《黑神話:悟空》深受中國網(wǎng)游玩家追捧(學生版+解析)
- 車裝鉆機 編制說明
- 2024中央空調銷售及安裝合同【范本】
- 音樂節(jié)組織與執(zhí)行流程指南
- 2025年護理部工作計劃
- 【計劃】2025年度合規(guī)管理工作計劃
- 中國咳嗽基層診療與管理指南(2024年)解讀
- 三好學生競選17
- 【美的集團公司內部審計存在的問題及對策研究(11000字論文)】
- 2023年注冊土木工程師(水利水電工程)歷年真題及答案
評論
0/150
提交評論