spring注入簡記

2022-01-15 13:53:40 字數 1669 閱讀 7445

我們知道物件是交給容器來管理的那麼

init() destroy():可以在bean配置中設定物件初識化前執行和銷毀後執行

int-delay=""表示是否延遲例項化即容器例項時還是獲取bean時例項化

bean 中scope=「」 範圍屬性表示單例或多個

用來指定bean的作用域

singleton---單例  只建立乙個物件。

prototype---原型  想建立多少個就建立多少了。

request---針對web專案,不同的請求建立單獨的bean物件,同乙個請求共享乙個bean。

session---針對web專案,不同的會話建立單獨的bean物件,同乙個會話共享乙個bean。

一:採用xml注入配置

1物件注入

2類中注入物件分兩種方式

2.1set注入bean

//在類中屬性對應的物件引用需有set()方法;

//引數的位置,對應的包名類名,id

//引數如果是基本型別直接用 index='' value=""

3注入的是基本型別,將ref改為value=""

4集合注入有對應集合標籤 如set list pro map

...不同集合賦值有差異(value value pro: key entry :key /value。。。

二,採用註解注入(@resource 預設按名稱找不到按型別  @autowired 預設型別)

首先配置xml文件命名空間,以及新增標籤這樣隱式的註冊了處理分析註解的直譯器,還需新增註解包。

1.註解種模擬較jdk有支援的註解 spring 也有支援的註解,可以使用jdk不依賴框架低耦合註解@resource

2.註解可以在屬性前,也可在set方法前。可以根據型別或者名稱尋找xml中的bean.(貌似**比較簡潔了而xml配置不要再那樣去巢狀配置了)

原理(大概是:首先註解可以定義存在週期譬如執行期,可以註解標註位置譬如字段屬性上方法上,通過遍歷所有的bean,然後遍歷bean中所有屬性和方法,找到所對應的註解然後做相應的處理,再到xml檔案中尋找匹配的bean實現注入)

三  以上都屬於手動裝配另一種屬於自動裝配:(auotwire=「」 有個按型別手動裝配註解autowired有些相似)

(只需要bean 中新增屬性引數,**不需要做處理)

在bytype:按型別 找到多個丟擲異常,沒找到注入null

byname:按名稱,沒找到也是null

constructor:按構造器引數注入bean,沒找到炮異常。

autodetect:自動檢測如果是預設構造器採用bytype,引數構造器採用constructor方式。

(聽說實現同乙個介面bean會被視為同一型別不能被按型別注入待測試)

四採用自動掃瞄注入:(這種方式很好狠強大)

1.首先xml中需要新增命名空間,同時新增

將掃瞄包下類中並且有@service @repository @controller @conponent註解的類。(貌似只是一種可讀性一種分類標記,之間沒有實際不同意義)

2.預設的bean 名稱為類名首字母小寫的名稱。

3.類上同時新增註解@scope("prototype")可以修改作用域

4.在初始化方法上新增

@postconstruct

init()

@predestroy

destroy()

spring方法注入 Spring方法注入

spring方法注入 spring核心現成可用,有兩個作用域 單例和原型。單例實現單例模式,這意味著在執行時 在jvm中 只有乙個例項。spring在上下文建立期間例項化它們,將它們快取在上下文中,並在需要時 或類似的東西 從快取中提供它們。每次訪問上下文以獲取bean時都會例項化原型。當需要在單例...

spring 依賴注入 Spring依賴注入

依賴注入 dependency injection,簡稱di 與控制反轉 ioc 的含義相同控制反 在使用spring框架之後,物件的例項不再由呼叫者來建立,而是由spring容器來建立,spring容器會負責控制程式之間的關係,而不是由呼叫者的程式 直接控制,這樣控制權由應用程式轉移到了sprin...

spring依賴注入 Set注入

即建立物件時,需要的屬性等由第三方提供的依賴,也就是spring來幫你注入!public class student public void setname string name public address getaddress public void setaddress address ad...