概念
依賴注入(dependency injection,di)。
依賴 : 指bean物件的建立依賴於容器 . bean物件的依賴資源 .
注入 : 指bean物件所依賴的資源 , 由容器來設定和裝配 .
在spring中,那些組成應用程式的主體及由spring ioc容器所管理的物件,被稱之為bean。簡單地講,bean就是由ioc容器初始化、裝配及管理的物件 .
當乙個bean的作用域為singleton,那麼spring ioc容器中只會存在乙個共享的bean例項,並且所有對bean的請求,只要id與該bean定義相匹配,則只會返回bean的同一例項。singleton是單例型別,就是在建立起容器時就同時自動建立了乙個bean的物件,不管你是否使用,他都存在了,每次獲取到的物件都是同乙個物件。注意,singleton作用域是spring中的預設作用域。要在xml中將bean定義成singleton,可以這樣配置:
"serviceimpl"
class
="cn.csdn.service.serviceimpl" scope=
"singleton"
>
測試:
@test
public
void
test03()
prototype當乙個bean的作用域為prototype,表示乙個bean定義對應多個物件例項。prototype作用域的bean會導致在每次對該bean請求(將其注入到另乙個bean中,或者以程式的方式呼叫容器的getbean()方法)時都會建立乙個新的bean例項。prototype是原型型別,它在我們建立容器的時候並沒有例項化,而是當我們獲取bean的時候才會去建立乙個物件,**而且我們每次獲取到的物件都不是同乙個物件。**根據經驗,對有狀態的bean應該使用prototype作用域,而對無狀態的bean則應該使用singleton作用域。在xml中將bean定義成prototype,可以這樣配置:
"account"
class
="com.foo.defaultaccount" scope=
"prototype"
/>
或者"account"
class
="com.foo.defaultaccount" singleton=
"false"
/>
request"loginaction"
class
=cn.csdn.loginaction" scope="request"/
>
針對每次http請求,spring容器會根據loginaction bean的定義建立乙個全新的loginaction bean例項,且該loginaction bean例項僅在當前http request內有效,因此可以根據需要放心的更改所建例項的內部狀態,而其他請求中根據loginaction bean定義建立的例項,將不會看到這些特定於某個請求的狀態變化。當處理請求結束,request作用域的bean例項將被銷毀。
session
"userpreferences"
class
="com.foo.userpreferences" scope=
"session"
/>
針對某個http session,spring容器會根據userpreferences bean定義建立乙個全新的userpreferences bean例項,且該userpreferences bean僅在當前http session內有效。與request作用域一樣,可以根據需要放心的更改所建立例項的內部狀態,而別的http session中根據userpreferences建立的例項,將不會看到這些特定於某個http session的狀態變化。當http session最終被廢棄的時候,在該http session作用域內的bean也會被廢棄掉。 演算法筆記學習筆記02
2.5 陣列 問題 a 習題6 4 有序插入 includeint main for i 0 i 10 i printf d n a i 問題 b 習題6 5 陣列元素逆置 includeint main 問題 c 習題6 6 楊輝三角 includeint main if n 2 return 0...
spring學習筆記
spring中兩個十分重要的概念 ioc di aop 1.ioc di inverse of control dependence injection ioc 控制反轉,看起來比較牛b,說起來十分簡單。就是不使用傳統的將類的依賴關係用硬編碼來維護的方式,而是讓容器來管理類之間的依賴,依賴關係在全在...
Spring 學習筆記
實現ioc的兩種方式 dependency injection 和 service locator 關於依賴注入 依賴注入指的是,當您在a物件內部需要b物件的某個功能時,a就依賴於b,您可以直接在a內部例項化b,但日後要修改就麻煩些。如果您不直接在a內部例項化b,而是通過ioc將乙個b例項從外部設定...