1含義:為解決企業應用開發的複雜性而建立的開源架構,用基本的javabean來完成ejb的事情 從大小和開銷方向spring都是輕量級的。
2,用途
① ioc容器可以将對象之間的依賴關系交由spring管理,進行控制。
② aop:友善進行面向切面的程式設計,是oop的擴充,想加什麼功能直接加。
③ 能夠內建各種優秀的架構,struts hibernate等。
3,spring 組成内容
4,準備配置工作
① 下載下傳springframework的最新版本,并解壓縮到指定目錄。在ide中建立一個項目,并将spring.jar将其相關類庫加入項目。
② 配置檔案 bean.xml。
③ 在classpath建立日志輸出檔案。log4j.properties。
④ org.springframework.beans及org.springframework.context包是spring ioc容器的基礎。
5,spring 基礎語義
1)ioc (inversion of control)=di (dependency injection)控制反轉和依賴注入,它是一種基于接口的程式設計,bean由容器建立在需要的時候拿來用即可,主要是采用反射來實作,其核心組建就是beanfactory 但實際開發常用xmlbeanfactory
2)依賴注入的幾種實作類型
type1設值注入:通過類的setter方法完成依賴關系的設定,就是給bean類中屬性加set方法。
type3 構造子注入:即通過構造函數完成依賴關系的設定。
3)幾種依賴注入模式的對比總結
type2 設值注入的優勢
1.對于習慣了傳統javabean開發的程式員而言,通過setter方法設定依賴關系顯得更加直覺,更加自然。
2.如果依賴關系(或繼承關系)較為複雜,那麼type3模式的構造函數也會相當龐大(我們需要在構造函數中設定所有依賴關系),此時type2模式往往更為簡潔。
3.對于某些第三方類庫而言,可能要求我們的元件必須提供一個預設的構造函數(如struts中的action),此時type3類型的依賴注入機制就展現出其局限性,難以完成我們期望的功能。
type3 構造子注入的優勢:
1.“在構造期即建立一個完整、合法的對象”,對于這條java設計原則,type3無疑是最好的響應者。
2.避免了繁瑣的setter方法的編寫,所有依賴關系均在構造函數中設定,依賴關系集中呈現,更加易讀。
3.由于沒有setter方法,依賴關系在構造時由容器一次性設定,是以元件在被建立之後即處于相對“不變”的穩定狀态,無需擔心上層代碼在調用過程中執行setter方法對元件依賴關系産生破壞,特别是對于singleton模式的元件而言,這可能對整個系統産生重大的影響。
4.同樣,由于關聯關系僅在構造函數中表達,隻有元件建立者需要關心元件内部的依賴關系。對調用者而言,元件中的依賴關系處于黑盒之中。對上層屏蔽不必要的資訊,也為系統的層次清晰性提供了保證。
5.通過構造子注入,意味着我們可以在構造函數中決定依賴關系的注入順序,對于一個大量依賴外部服務的元件而言,依賴關系的獲得順序可能非常重要,比如某個依賴關系注入的先決條件是元件的datasource及相關資源已經被設定。
理論上,以type3類型為主,輔之以type2類型機制作為補充,可以達到最好的依賴注入效果,不過對于基于spring framework開發的應用而言,type2使用更加廣泛。
4)bean.xml配置檔案
bean factory,顧名思義,負責建立并維護bean執行個體。
bean factory負責根據配置檔案建立bean執行個體,可以配置的項目有:
1.bean屬性值及依賴關系(對其他bean的引用)
2.bean建立模式(是否singleton模式,即是否隻針對指定類維持全局唯一的執行個體)
3.bean初始化和銷毀方法
4.bean的依賴關系
5)xmlbeanfactory兩中注入方式的配置
①property-------?set方法的注入配置
②constructor---------?構造方法的注入配置
說明: index=”0”構造方法第一個參數,用index可以稍微減少備援,但是它更容易出錯且不如type屬性可讀性高。你應該僅在構造函數中有參數沖突時使用index。
6) 依賴的目标類型分成三種形式:
1) 基本類型+string
data類型自動轉化
2) 對其他bean 的引用
3) 集合類型 list props set map
list set properties配置類似:
[ 尐魚兒的qq群:726994578 ] --- [ https://github.com/godmaybelieve ]