




已閱讀5頁,還剩2頁未讀, 繼續(xù)免費閱讀
版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
第22講 Spring原理本講目標: 掌握Spring依賴注入的原理一、 spring簡介 Spring是一個開源框架,Rod Johnson創(chuàng)建。 基于控制反轉(Inversion of Control ,IoC)和面向切面(Aspect Oriented Programming , AOP)的容器框架。Spring 致力于J2EE 應用的各層的解決方案,而不是僅僅專注于某一層的方案??梢哉f Spring 是企業(yè)應用開發(fā)的“一站式”選擇,并貫穿表現(xiàn)層、業(yè)務層及持久層。然而,Spring 并不想取代那些已有的框架,而與它們無縫地整合。 目標: 使現(xiàn)有技術更加易用,簡化企業(yè)開發(fā)。 內(nèi)容: 依賴注入容器,AOP實現(xiàn)(聲明式事務), DAO/ORM支持,Web集成 使用Spring好處: 降低組件之間的耦合度, 使各層間松耦。 可以使用容器提供的眾多服務,如:事務管理服務、消息服務等等。 非侵入性,對Spring API的依賴減少到最低。 AOP技術,很容易實現(xiàn)如權限攔截、運行期監(jiān)控等功能。 提供眾多輔作類,加快應用的開發(fā),如: JdbcTemplate、 HibernateTemplate。 對于主流的框架提供集成支持,如:JDBC、Hibernate、Struts等,更便于開發(fā)。Spring框架總體架構圖二、 依賴注入1. 依賴關系(Dependency)對象之間最弱的一種關聯(lián)方式,是臨時性的關聯(lián)。代碼中一般指由局部變量、函數(shù)參數(shù)、返回值建立的對于其他對象的調(diào)用關系。 依賴一般情況下是以下幾種情況之一:a、ClassA中某個方法的參數(shù)類型是ClassB;這種情況成為耦合;b、ClassA中某個方法的參數(shù)類型是ClassB的一個屬性;這種情況成為緊耦合;c、ClassA中某個方法的實現(xiàn)實例化ClassB;d、ClassA中某個方法的返回值的類型是ClassB;如果出現(xiàn)了上述四種情況之一,兩個類很有可能就是“依賴”關系。依賴關系(Dependency):是類與類之間的連接,依賴總是單向的。依賴關系代表一個類依賴于另一個類的定義。2. IoC 控制反轉(Inversion of Control) 所謂控制反轉就是應用本身不負責依賴對象的創(chuàng)建及維護,依賴對象的創(chuàng)建及維護是由外部容器負責的。這樣控制權就由應用轉移到了外部容器,控制權的轉移就是所謂反轉。public class UserBizImpl private UserDao userDao = new UserDaoImpl(); public void save(User user) userDao.save(user); userDao是在應用內(nèi)部創(chuàng)建及維護的。3. 依賴注入(Dependency Injection)當我們把依賴對象交給外部容器負責創(chuàng)建,那么UserBizImpl 類可以改成如下:public class UserBizImpl private UserDao userDao ;/通過構造器參數(shù),讓容器把創(chuàng)建好的依賴對象注入進UserBizImpl, public UserBizImpl(UserDao userDao) this.userDao=userDao; /也可以使用setter方法進行注入public void setUserDao(UserDao userDao)this.userDao=userDao; public void save(User user) userDao.save(user); 所謂依賴注入就是指:在運行期,由外部容器動態(tài)地將依賴對象注入到組件中。(這里通過構造器注入UserDao )4. spring實現(xiàn)依賴注入 運行類庫方法一:到/download下載spring,然后進行解壓縮,在解壓目錄中找到下面jar文件,拷貝到類路徑下distspring.jarlibjakarta-commonscommons-logging.jar方法二:Hibernate添加spring支持 項目右擊myeclipseadd spring capabilities 添加spring的配置文件該配置模版可以從spring的參考手冊(docsreferencehtml_singleindex.html)或spring的例子中得到。配置文件的取名可以任意,文件可存放在任何目錄下,但考慮到通用性,一般放在類路徑下。5. 實例化spring容器實例化Spring容器常用的兩種方式:方法一:(推薦)在類路徑下尋找配置文件來實例化容器ApplicationContext ctx = new ClassPathXmlApplicationContext(beans.xml);方法二:在文件系統(tǒng)路徑下尋找配置文件來實例化容器ApplicationContext ctx = new FileSystemXmlApplicationContext(new String“d:beans.xml“);Spring的配置文件可以指定多個,可以通過String數(shù)組傳入。6. 從spring容器中得到bean當spring容器啟動后,因為spring容器可以管理bean對象的創(chuàng)建,銷毀等生命周期,所以我們只需從容器直接獲取Bean對象就行,而不用編寫一句代碼來創(chuàng)建bean對象。從容器獲取bean對象的代碼如下:ApplicationContext ctx = new ClassPathXmlApplicationContext(“beans.xml”);OrderService service = (OrderService)ctx.getBean(personService);getBean()參數(shù)可以指定id屬性,也可以指定name屬性。id通常為有效的標識符。id=userBizImplname可以為非標識符。 name= user.Biz#Impl “無論按照id屬性還是name屬性找到即可7. 實例化bean 使用類構造器實例化 使用靜態(tài)工廠方法實例化 public class OrderFactory public static OrderServiceBean createOrder()return new OrderServiceBean(); 使用實例工廠方法實例化: public class OrderFactory public OrderServiceBean createOrder()return new OrderServiceBean();8. Bean的作用域 singleton :在每個Spring IoC容器中一個bean定義只有一個對象實例。(缺省設置為singleton) prototype:每次從容器獲取bean都是新的對象。根據(jù)經(jīng)驗,對有狀態(tài)的bean應該使用prototype作用域,而對無狀態(tài)的bean則應該使用singleton作用域。 request 表示該針對每一次HTTP請求都會產(chǎn)生一個新的bean,同時該bean僅在當前HTTP request內(nèi)有效 session 表示該針對每一次HTTP請求都會產(chǎn)生一個新的bean,同時該bean僅在當前HTTP session內(nèi)有效 globalSession 不過它僅僅在基于portlet的web應用中才有意義。Portlet規(guī)范定義了全局Session 的概念,它被所有構成某個portlet web應用的各種不同的portlet所共享。 后面3種均基于web的Spring ApplicationContext情形下有效,了解9. 注入依賴對象 基本類型對象注入: /屬性setter方法注入 注入其他bean:表示null值方式一 方式二(使用內(nèi)部bean,但該bean不能被其他bean引用) 10. 集合類型的裝配public class UserBizImpl private Set sets = new HashSet();private List lists = new ArrayList();priva
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年中國可移動的模塊化結構行業(yè)市場全景分析及前景機遇研判報告
- 2025年中國可編程照明行業(yè)市場全景分析及前景機遇研判報告
- 2025年中國抗衰老眼霜行業(yè)市場全景分析及前景機遇研判報告
- 氨綸抽條密絲絨項目投資可行性研究分析報告(2024-2030版)
- 口腔健康與肌膚護理
- syb培訓動畫課件
- 2025年 什邡市市級機關遴選考試筆試試題附答案
- 2025-2030年中國產(chǎn)銷化工油漆類行業(yè)深度研究分析報告
- 護具系列項目可行性研究報告
- 2025年 北京市海淀區(qū)學院路小學招聘考試筆試試題附答案
- 工圖機械制圖試卷專題11綜合型組合體三視圖求法習題
- 新版建設工程工程量清單計價標準解讀
- 初中數(shù)學專題講座課件
- 【MOOC】人像攝影-中國傳媒大學 中國大學慕課MOOC答案
- 【MOOC】計算機組成原理-電子科技大學 中國大學慕課MOOC答案
- 【MOOC】電路分析AⅡ-西南交通大學 中國大學慕課MOOC答案
- 小學生數(shù)學邏輯推理題100道及答案解析
- 基本氣象要素
- 食品安全規(guī)章制度模板打印
- 2024年永平縣小升初全真數(shù)學模擬預測卷含解析
- 2002版《水利工程施工機械臺時費定額》
評論
0/150
提交評論