Spring容器的簡單Bean配置詳解

2021-08-21 21:06:25 字數 3440 閱讀 1032

1.導包

spring核心容器要導四個包,分別是core,beans,context和spel,還有兩個日誌包logging和log4j(老版本適用)。

2.編寫配置檔案

spring的乙個特點就是它是乙個容器性質的框架,它可以把我們serivce層和dao層的功能類做成bean物件放到容器中進行管理,所以配置spring的容器基本上就是把我們在處理請求是需要用到的類寫到配置檔案中,而且spring在建立的時候就會把配置檔案裡的所有的bean都新建乙個例項,因此在**中直接通過spring獲取類物件而不用去自己新建乙個物件,這也是spring的ioc思想(反轉控制)。

user類

public class user 

private string name;

private integer age;

private car car;

public user(string name, car car)

public user(car car,string name)

public user(integer name, car car)

public car getcar()

public void setcar(car car)

public string getname()

public void setname(string name)

public integer getage()

public void setage(integer age)

public void init()

public void destory()

@override

public string tostring()

}

public class car 

public void setname(string name)

public string getcolor()

public void setcolor(string color)

@override

public string tostring()

}

把user類新增到spring配置檔案中

<?xml version="1.0" encoding="utf-8"?>

class屬性:被管理物件的完整類名.

name屬性:給被管理的物件起個名字.獲得物件時根據該名稱獲得物件.  

可以重複.可以使用特殊字元.

id屬性: 與name屬性一模一樣. 

名稱不可重複.不能使用特殊字元.(結論: 盡量使用name屬性)

scope屬性:singeton:預設值,單例物件,即每次從spring中獲取的物件都是同乙個,在spring建立的時候物件也會建立。 

prototype:多例物件,每次從spring中獲取的都是新的物件,在獲取時才會建立,而且spring把這個物件丟擲後不                                          再進行生命週期管理。

session:web 專案中,spring 建立乙個 bean 的物件,將物件存入到 session 域中,生命週期同session。

request :web 專案中,spring 建立乙個 bean 的物件,將物件存入到 request 域中,生命週期同request。

globalsession:web 專案中,應用在 porlet 環境.如果沒有 porlet 環境那麼 globalsession 相當於 session。

這樣我們就可以通過spring物件的getbean方法獲取到這個類的物件,而不是在使用的時候去建立他,通過這個配置資訊,spring會採用空參構造方法去建立這個bean的物件。

<?xml version="1.0" encoding="utf-8"?>		

當然建立的方式不止一種,上面的**提供了三種建立物件的方法,空參構造建立,靜態工廠建立和例項工廠建立。建立方式1的空參構造建立可以定義兩個引數init-mothod和destroy-mothod,顧名思義就是init-mothod是指定乙個函式在這個物件建立完畢後執行,destroy-mothod是指定乙個函式在這個物件銷毀前執行。建立方式2靜態工廠建立則是呼叫乙個靜態方法建立名為user2的物件放入容器。建立方式3的例項工廠建立方式則是通過乙個例項物件的方法去建立乙個名為user3的物件放入容器,factory-bean指定這個物件的名稱,factory-method指定能建立出user3物件的這個例項物件的方法。

屬性注入

在把需要用到的類寫到配置檔案後,還有乙個問題就是如何在程式呼叫這些bean之前就給他們把相應的屬性賦值完畢,spring的di可以解決這一問題。di :dependency injection 依賴注入.需要有 ioc 的環境,spring 建立這個類的過程中將類的依賴的屬性設定進去。

set方式注入是使用最多的注入方式,spring會通過物件的set方法設定指定的值。我們在標籤中指定物件中屬性的值,name指定屬性的名稱,value指定屬性的值,ref是引用型別注入,為car屬性注入名稱為的car的物件(前提是你的配置檔案中有乙個名為car的物件)。

建構函式注入是使用我們在類中寫好的建構函式去建立物件,其中:

name屬性: 建構函式的引數名

index屬性: 建構函式的引數索引

type屬性: 建構函式的引數型別   

圖中的資訊表明spring應該呼叫user物件的public user(string name, car car) 構造方法去注入屬性。

p命名空間屬性注入,匯入p命名空間  xmlns:p="",使用p:屬性完成注入 

p:屬性名="值"        p:屬性名-ref="bean名稱"     

(注):p命名空間走set注入方法。

spel注入: spring expression language sping表示式語言-->

spel注入,這種方法是通過在#中填寫其他配置好的物件的資訊,然後引用其他物件屬性的值作為自己屬性的值。

tomjerry

jack

rose

com.jdbc.mysql.driver

root

1234

複雜型別的注入,如果陣列或list中只準備注入乙個值(物件),直接使用value|ref即可 ,多值可用標籤配置,map型別用標籤配置,properties型別用標籤配置。

配置檔案包含

spring的配置檔案中提供了標籤去引入其他的配置檔案,可實現多配置檔案。

spring容器中的bean建立

springioc spring容器中的bean建立 三種方案 面試題 利用預設的建構函式 利用靜態工廠方法 利用例項工廠方法 建立物件的時機 預設情況下,在spring啟動的時候,建立納入spring容器中所有的bean 在spring容器啟動的時候,可以檢查錯誤 但是如果bean的屬性中有資料,...

Spring容器Bean的作用域

我們只要在web開發總bean的作用域有四種 1.singleton 這種bean在spring容器中只含有乙個例項物件,預設情況下會在容器啟動的時候初始化,也可以在配置檔案中設定bean的lazy init的屬性為true,這樣就可以延遲bean的建立帶第一次獲取這個bean的例項的時候,當然我們...

Spring容器對Bean的管理

spring容器對bean的管理 1 bean物件建立的時機 預設是隨著容器建立,可以使用lazy init true 在呼叫getbean建立 延遲建立 也可以用批量延遲建立 2 bean物件的建立模式 預設是單例,可以使用scope屬性改變。singleton 單例,每次呼叫getbean返回同...