




已閱讀5頁(yè),還剩2頁(yè)未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第22講 Spring原理本講目標(biāo): 掌握Spring依賴(lài)注入的原理一、 spring簡(jiǎn)介 Spring是一個(gè)開(kāi)源框架,Rod Johnson創(chuàng)建。 基于控制反轉(zhuǎn)(Inversion of Control ,IoC)和面向切面(Aspect Oriented Programming , AOP)的容器框架。Spring 致力于J2EE 應(yīng)用的各層的解決方案,而不是僅僅專(zhuān)注于某一層的方案。可以說(shuō) Spring 是企業(yè)應(yīng)用開(kāi)發(fā)的“一站式”選擇,并貫穿表現(xiàn)層、業(yè)務(wù)層及持久層。然而,Spring 并不想取代那些已有的框架,而與它們無(wú)縫地整合。 目標(biāo): 使現(xiàn)有技術(shù)更加易用,簡(jiǎn)化企業(yè)開(kāi)發(fā)。 內(nèi)容: 依賴(lài)注入容器,AOP實(shí)現(xiàn)(聲明式事務(wù)), DAO/ORM支持,Web集成 使用Spring好處: 降低組件之間的耦合度, 使各層間松耦。 可以使用容器提供的眾多服務(wù),如:事務(wù)管理服務(wù)、消息服務(wù)等等。 非侵入性,對(duì)Spring API的依賴(lài)減少到最低。 AOP技術(shù),很容易實(shí)現(xiàn)如權(quán)限攔截、運(yùn)行期監(jiān)控等功能。 提供眾多輔作類(lèi),加快應(yīng)用的開(kāi)發(fā),如: JdbcTemplate、 HibernateTemplate。 對(duì)于主流的框架提供集成支持,如:JDBC、Hibernate、Struts等,更便于開(kāi)發(fā)。Spring框架總體架構(gòu)圖二、 依賴(lài)注入1. 依賴(lài)關(guān)系(Dependency)對(duì)象之間最弱的一種關(guān)聯(lián)方式,是臨時(shí)性的關(guān)聯(lián)。代碼中一般指由局部變量、函數(shù)參數(shù)、返回值建立的對(duì)于其他對(duì)象的調(diào)用關(guān)系。 依賴(lài)一般情況下是以下幾種情況之一:a、ClassA中某個(gè)方法的參數(shù)類(lèi)型是ClassB;這種情況成為耦合;b、ClassA中某個(gè)方法的參數(shù)類(lèi)型是ClassB的一個(gè)屬性;這種情況成為緊耦合;c、ClassA中某個(gè)方法的實(shí)現(xiàn)實(shí)例化ClassB;d、ClassA中某個(gè)方法的返回值的類(lèi)型是ClassB;如果出現(xiàn)了上述四種情況之一,兩個(gè)類(lèi)很有可能就是“依賴(lài)”關(guān)系。依賴(lài)關(guān)系(Dependency):是類(lèi)與類(lèi)之間的連接,依賴(lài)總是單向的。依賴(lài)關(guān)系代表一個(gè)類(lèi)依賴(lài)于另一個(gè)類(lèi)的定義。2. IoC 控制反轉(zhuǎn)(Inversion of Control) 所謂控制反轉(zhuǎn)就是應(yīng)用本身不負(fù)責(zé)依賴(lài)對(duì)象的創(chuàng)建及維護(hù),依賴(lài)對(duì)象的創(chuàng)建及維護(hù)是由外部容器負(fù)責(zé)的。這樣控制權(quán)就由應(yīng)用轉(zhuǎn)移到了外部容器,控制權(quán)的轉(zhuǎn)移就是所謂反轉(zhuǎn)。public class UserBizImpl private UserDao userDao = new UserDaoImpl(); public void save(User user) userDao.save(user); userDao是在應(yīng)用內(nèi)部創(chuàng)建及維護(hù)的。3. 依賴(lài)注入(Dependency Injection)當(dāng)我們把依賴(lài)對(duì)象交給外部容器負(fù)責(zé)創(chuàng)建,那么UserBizImpl 類(lèi)可以改成如下:public class UserBizImpl private UserDao userDao ;/通過(guò)構(gòu)造器參數(shù),讓容器把創(chuàng)建好的依賴(lài)對(duì)象注入進(jìn)UserBizImpl, public UserBizImpl(UserDao userDao) this.userDao=userDao; /也可以使用setter方法進(jìn)行注入public void setUserDao(UserDao userDao)this.userDao=userDao; public void save(User user) userDao.save(user); 所謂依賴(lài)注入就是指:在運(yùn)行期,由外部容器動(dòng)態(tài)地將依賴(lài)對(duì)象注入到組件中。(這里通過(guò)構(gòu)造器注入U(xiǎn)serDao )4. spring實(shí)現(xiàn)依賴(lài)注入 運(yùn)行類(lèi)庫(kù)方法一:到/download下載spring,然后進(jìn)行解壓縮,在解壓目錄中找到下面jar文件,拷貝到類(lèi)路徑下distspring.jarlibjakarta-commonscommons-logging.jar方法二:Hibernate添加spring支持 項(xiàng)目右擊myeclipseadd spring capabilities 添加spring的配置文件該配置模版可以從spring的參考手冊(cè)(docsreferencehtml_singleindex.html)或spring的例子中得到。配置文件的取名可以任意,文件可存放在任何目錄下,但考慮到通用性,一般放在類(lèi)路徑下。5. 實(shí)例化spring容器實(shí)例化Spring容器常用的兩種方式:方法一:(推薦)在類(lèi)路徑下尋找配置文件來(lái)實(shí)例化容器ApplicationContext ctx = new ClassPathXmlApplicationContext(beans.xml);方法二:在文件系統(tǒng)路徑下尋找配置文件來(lái)實(shí)例化容器ApplicationContext ctx = new FileSystemXmlApplicationContext(new String“d:beans.xml“);Spring的配置文件可以指定多個(gè),可以通過(guò)String數(shù)組傳入。6. 從spring容器中得到bean當(dāng)spring容器啟動(dòng)后,因?yàn)閟pring容器可以管理bean對(duì)象的創(chuàng)建,銷(xiāo)毀等生命周期,所以我們只需從容器直接獲取Bean對(duì)象就行,而不用編寫(xiě)一句代碼來(lái)創(chuàng)建bean對(duì)象。從容器獲取bean對(duì)象的代碼如下:ApplicationContext ctx = new ClassPathXmlApplicationContext(“beans.xml”);OrderService service = (OrderService)ctx.getBean(personService);getBean()參數(shù)可以指定id屬性,也可以指定name屬性。id通常為有效的標(biāo)識(shí)符。id=userBizImplname可以為非標(biāo)識(shí)符。 name= user.Biz#Impl “無(wú)論按照id屬性還是name屬性找到即可7. 實(shí)例化bean 使用類(lèi)構(gòu)造器實(shí)例化 使用靜態(tài)工廠方法實(shí)例化 public class OrderFactory public static OrderServiceBean createOrder()return new OrderServiceBean(); 使用實(shí)例工廠方法實(shí)例化: public class OrderFactory public OrderServiceBean createOrder()return new OrderServiceBean();8. Bean的作用域 singleton :在每個(gè)Spring IoC容器中一個(gè)bean定義只有一個(gè)對(duì)象實(shí)例。(缺省設(shè)置為singleton) prototype:每次從容器獲取bean都是新的對(duì)象。根據(jù)經(jīng)驗(yàn),對(duì)有狀態(tài)的bean應(yīng)該使用prototype作用域,而對(duì)無(wú)狀態(tài)的bean則應(yīng)該使用singleton作用域。 request 表示該針對(duì)每一次HTTP請(qǐng)求都會(huì)產(chǎn)生一個(gè)新的bean,同時(shí)該bean僅在當(dāng)前HTTP request內(nèi)有效 session 表示該針對(duì)每一次HTTP請(qǐng)求都會(huì)產(chǎn)生一個(gè)新的bean,同時(shí)該bean僅在當(dāng)前HTTP session內(nèi)有效 globalSession 不過(guò)它僅僅在基于portlet的web應(yīng)用中才有意義。Portlet規(guī)范定義了全局Session 的概念,它被所有構(gòu)成某個(gè)portlet web應(yīng)用的各種不同的portlet所共享。 后面3種均基于web的Spring ApplicationContext情形下有效,了解9. 注入依賴(lài)對(duì)象 基本類(lèi)型對(duì)象注入: /屬性setter方法注入 注入其他bean:表示null值方式一 方式二(使用內(nèi)部bean,但該bean不能被其他bean引用) 10. 集合類(lèi)型的裝配public class UserBizImpl private Set sets = new HashSet();private List lists = new ArrayList();priva
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- TD/T 1036-2013土地復(fù)墾質(zhì)量控制標(biāo)準(zhǔn)
- TD/T 1015-2007城鎮(zhèn)地籍?dāng)?shù)據(jù)庫(kù)標(biāo)準(zhǔn)
- 地理●廣東卷丨2021年廣東省普通高中學(xué)業(yè)水平選擇性考試地理試卷及答案
- EDTA標(biāo)準(zhǔn)溶液的配制與標(biāo)定43課件
- 考研復(fù)習(xí)-風(fēng)景園林基礎(chǔ)考研試題【黃金題型】附答案詳解
- 風(fēng)景園林基礎(chǔ)考研資料試題及答案詳解(典優(yōu))
- 《風(fēng)景園林招投標(biāo)與概預(yù)算》試題A附參考答案詳解(培優(yōu)a卷)
- 2025-2026年高校教師資格證之《高等教育法規(guī)》通關(guān)題庫(kù)含答案詳解(培優(yōu))
- 2024年山東華興機(jī)械集團(tuán)有限責(zé)任公司人員招聘筆試備考題庫(kù)及答案詳解1套
- 無(wú)錫市2024-2025學(xué)年五年級(jí)下學(xué)期數(shù)學(xué)期末試題一(有答案)
- 新媒體編輯面試題及答案
- 2025年上海市高考英語(yǔ)熱點(diǎn)復(fù)習(xí):六選四句子還原之說(shuō)明文(上)
- 2025年gmp 基礎(chǔ)知識(shí)培訓(xùn)試題及答案
- 網(wǎng)絡(luò)空間中的群體行為分析-深度研究
- 軟件工程監(jiān)理實(shí)施細(xì)則10
- 統(tǒng)計(jì)業(yè)務(wù)培訓(xùn)
- 2025-2030年中國(guó)水利工程勘察設(shè)計(jì)市場(chǎng)運(yùn)營(yíng)狀況與發(fā)展?jié)摿Ψ治鰣?bào)告
- ??抵腔酃さ亟鉀Q方案
- 內(nèi)鏡護(hù)理安全管理制度
- 數(shù)理統(tǒng)計(jì)課件:三大分布和分位數(shù)
- 湖北省武漢市漢陽(yáng)區(qū)2024-2025學(xué)年七年級(jí)上學(xué)期期末檢測(cè)英語(yǔ)試卷(含答案無(wú)聽(tīng)力原文及音頻)
評(píng)論
0/150
提交評(píng)論