Spring Bean注入與獲取

2021-07-25 05:20:01 字數 2045 閱讀 5980

屬性注入即通過set***()方法注入bean的屬性值或依賴物件,由於屬性注入方式具有可選擇性和靈活性高的優點,因此屬性注入是實際應用中最常採用的注入方式。

屬性注入要求bean提供乙個預設的建構函式,並為需要注入的屬性提供對應的setter方法。spring先呼叫bean的預設建構函式例項化bean物件,然後通過反射的方式呼叫setter方法注入屬性值。

使用建構函式注入的前提是bean必須提供帶引數的建構函式。

person 類包含屬性 car,內部bean使用構造方法注入。

root

123456

jdbc:mysql:///test

com.mysql.jdbc.driver

one result as follows :

person [age=21, cars=[car [brank=audi, corp=yiqi, maxspeed=0.0, price=520020], 

car [brank=baoma, corp=yiqi, maxspeed=520.0, price=300000],

car [brank=audi, corp=dazhong, maxspeed=0.0, price=52020]], name=jane]

獲取bean的幾種方式:

1.直接使用beanname

2.使用實現型別

也可以使用上行介面型別,介面不能例項化,spring自動查詢其實現類並例項化

兩個bookshopdao的class型別都是bookshopdaoimpl !!!

lazy-init(懶載入),表示該bean在容器初始化的時候不進行初始化。而在第一次呼叫的時候再進行載入。懶載入只針對單例項bean。

xml配置如下:

它有兩個值:true,false(預設)。也可以配置在beans標籤上

上面示例為屬性注入和建構函式注入,spring還提供了工廠方法注入。

① 非靜態工廠方法

有些工廠方法是非靜態的,即必須例項化工廠類後才能呼叫工廠方法。

/*

* 例項工廠的方法:先建立工廠例項,再呼叫其方法來獲得需要的bean

*/ private mapcars = null;

public instanceca***ctory()

public car getcar(string name)

xml配置如下:

工廠類負責建立乙個或多個目標類例項,工廠類方法一般以介面或抽象類變數的形式返回目標類例項,工廠類對外遮蔽了目標類的例項化步驟,呼叫者甚至不用知道具體的目標類是什麼。

② 靜態工廠方法

很多任務廠類都是靜態的,這意味著使用者在無須建立工廠類例項的情況下就可以呼叫工廠類方法,因此,靜態工廠方法比非靜態工廠方法的呼叫更加方便。

private static mapcars = new hashmap();

static

public static car getcar(string name)

xml配置如下:

參考博文:

spring - bean配置中的工廠方法與factorybean

Spring bean注入的方式

一 setter方法注入 配置檔案如下 action實現類中 private ihelloservice helloservice private string name public void sayhello public void sethelloservice ihelloservice h...

04 Spring Bean注入方式

實現ioc容器主要有兩種方式 1,依賴查詢 2,依賴注入,spring採用的是依賴注入的方式 依賴注入又分為3種方式 2.1 構造器注入 2.2 setter注入 2.3 介面注入 構造器注入和setter注入背後都是採用反射的技術來實現。介面注入,通常是指資源並非來自系統自身,而是來自系統外。比如...

spring bean註冊和注入覆蓋

1.註冊 儲存註冊的俄beandefinition private final mapbeandefinitionmap new concurrenthashmap 向ioc容器註冊解析的beandefiniton public void registerbeandefinition string ...