SPING 介紹web
sping 是覆蓋整個三層框架數據庫
做用:負責管理項目中的全部對象,apache
sing 看做項目中的管家。編程
sping 一站式框架,由於他是整個項目對象的容器,就是一個容器。數組
由於他在 sping 中管理全部的對象,所以能夠處理不一樣的請求;也由於如此裏面裝着能夠操做session
數據庫的對象。架構
容器中裝着什麼對象就有什麼功能。app
能夠很清晰的將對象的關係理清,三層架構。框架
sping 的核心是控制反轉(Ioc)和麪向切面(Aop)。模塊化
sping 是一個分層的JavaSE/EEfull-stack(一站式)輕量級開源框架。
SPING的優勢:
方便解耦,簡化開發
Sping 就是一個大工廠,能夠將全部對象建立和依賴關係維護,交給Sping管理
AOP編程的支持。
Sping 提供面向切面的編程,能夠方便的實現對程序進行權限攔截,運行監控等功能聲明事務
的支持
只須要經過配置就能夠完成對事務的管理,而無需手動編程
方便程序的測試
Sping 對junit4支持,能夠經過過註解方便的測試Sping 程序
方便集成各類優秀的框架
Sping 不排斥其餘框架,還能幫其餘框架管理對象。
aop支持 ioc思想 sping jdbc aop 事務 juint 測試支持
SPING 框架的搭建
1.導包
模塊圖:
最下排中紅框中的包就是咱們使用Sping 要導入的最最基礎的jar包
同時導入日誌包 使用apache的jar包
左上層的五個包是有關dao層的jar包
右上角的四個jar包是有關於web層的包
2.建立一個對象
一個CLASS類,一個簡單的Java Bean文件
3.書寫配置註冊對象到容器。
sping 配置文件規則----就是沒有規則,可是建議注意業內規範,通常用applicationContext.xml
同時位置任意可是建議放在src文件之下。
導入約束:
導入約束後,將User對象交給sping容器管理
用<bean></bean>來導入
導入成功的界面。
4.代碼測試。
新建一個測試類,放入包下。
測試過程
1)建立容器對象。
2)向容器要「user」對象
3) 打印user對象
IOC 反轉控制:
將咱們建立的對象方式反轉了
之前對象的建立是由咱們開發人員本身維護,包括依賴關係也是本身注入。使用sping 以後,對象的建立以及依賴關係能夠由sping 完成建立以及注入。反轉控制就是反轉了對象的建立方式,從咱們本身建立反轉給了程序(sping)。
DI:依賴注入:(一種技術)
實現IOC思想須要DI作技術支持
注入方式:
set方法注入
構造方法注入
字段注入
注入類型:
值類型注入:八大基本數據類型
引用類型注入:將依賴的對象注入
application Context&Beanfactory(接口)
Beanfactory:接口(原始接口,實現功能較爲單一)
特色:接口實現類的容器。特色是每次在得到對象時纔會建立對象。
繼承關係圖:
applicationContext :
特色:每次容器啓動時就會建立容器中配置的全部對提供了更多功能。
從類路徑下加載配置文件ClassPathXmlApplicationContext
從硬盤絕對路徑下加載配置文件:FileSystemXmlApplicationContext.
結論: 在web開發中,使用applicationContext.在資源匱乏環境中可使用BeanFactory。
三:學習配置文件:
sping 配置詳解--
1.Bean元素:
該元素描述須要sping容器管理的對象
name屬性:給被管理的對象起個名字,得到對象是根據該名稱得到對象。(可使用特殊字符能夠重複)
class屬性:被管理對象的完整類名。
id屬性:與name屬性如出一轍。規範:名稱不可重複,不能使用特殊字符。
結論:儘可能使用name屬性。
2.sping 配置詳解。
三種對象建立方式。
建立方式一:空參構造建立方式
如下兩種建立方式瞭解
建立方式二:靜態工廠方式。
建立方式三:動態示例工廠建立user
3.sping 配置詳解-scope屬性:
在bean元素中加的scope屬性。
四個取值:
1)singleton:(默認值)單例對象。絕大多數時都會使用單例的。
被標識爲 單例的對象在sping 容器中只會存在一個實例
2)prototype:多例原型,被標識爲多例的對象每次在得到時纔會建立,每次建立都是新的對象
在於與struts框架整合的時候,action對象要交給sping來管理,這是action要配置爲多例。
如下兩種瞭解:
3)request:在web環境下,與request的生命週期一致。
4)session:在web環境下,與session的生命週期一致。
4.sping 配置詳解,初始化&銷燬方法。
生命週期屬性(瞭解)
配置一個方法做爲生命週期初始化方法,sping會在對象建立以後當即調用。
init-method destory-method
配置一個方法做爲生命週期的銷燬方法,sping容器再關閉並銷燬全部容器中的對象以前調用5.
5.模塊化配置:
sping的分模塊配置。在主配置文件中,引入其餘配置用的元素爲import導入其餘sping配置文件
6.sping屬性注入:(set方式)(構造函數注入)(p名稱空間注入)(spel注入)
set 方式注入:
ref屬性制定哪個對象注入
2)構造函數注入:
再用構造函數方式注入時,有了name,type,index能夠指定到任何一個構造函數。
當有多個構造函數符合要求時。
用name屬性能夠指定構造函數的名稱。
用index屬性能夠指定構造函數的順序。
用type 屬性能夠指定構造函數的類型。
P名稱空間注入:首先要導入P名稱空間
7.複雜類型注入:
1)數組類型注入:
注意:若是數組中只准備註入一個值(對象),直接使用 value/ref便可
其餘複雜類型注入中,在多個數值注入時,在property元素下加入要注入的類型元素便可,例如:
在array類型注入中,在property元素下,加入array元素,在array元素中進行賦值。便可獲得所想注入的值。
注意,其中map類型的爲鍵值對,因此在注入時可使用entry元素來進行注入,