spring學習之IOC的學習

2021-08-21 12:23:31 字數 3341 閱讀 1598

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

##2、xml中幾種注入方式

首先建立三個包,再建立3個類: ![這裡寫描述]( userdao中:

public class userdao 

}

userservice中:

public class userservice */

public void insertuser()

public userdao getuserdao()

@resource

public void setuserdao(userdao userdao)

public void init()

public void destory()

}

common類:

public class common 

public void setlist(listlist)

public mapgetmap()

public void setmap(mapmap)

public setgetset()

public void setset(setset)

@override

public string tostring()

}

xml檔案中配置注入可以有四種方式,分別是setter方法注入,構造方法注入,靜態工廠注入和例項工廠注入,其中,後面兩種注入方法基本用不到,所以這裡介紹前面兩種注入方式。

setter方法注入:

首先對要注入的物件新增getter、setter方法:

public userdao getuserdao() 

public void setuserdao(userdao userdao)

然後在xml中新增bean的宣告:

最後測試即可:

@test

public void testdi()

構造方法注入:

首先也要在類中編寫構造方法:

public userservice(userdao userdao)
然後在xml總進行配置:

最後測試即可。

##3、集合的注入

首先也是在類中編寫getter、setter方法:

private listlist;

private mapmap;

private setset;

public listgetlist()

public void setlist(listlist)

public mapgetmap()

public void setmap(mapmap)

public setgetset()

public void setset(setset)

@override

public string tostring()

然後在xml中:

123

4532

最後測試:

@test

public void testeasyvalue()

##4、scope測試

在spring中,scope指的是單例和多例,當scope值為singleton表示單例,當值為prototype的時候表示多例,預設為單例。 在xml中配置一句:

然後測試:

@test

public void testscope()

結果為true,當設定為prototype的時候,結果為false。

##5、自動裝配

在xml配置一句:

即可,表示按型別來接收。如果乙個型別有兩個類,那麼將bytype改為byname即可。

##6、lifecycle

預設情況下配置在xml中的類會在初始化的容器載入的時候就被例項化,如果配置了init-method值和destroy-method值,那麼會在載入和銷毀的時候呼叫對應方法。如果在xml載入時不例項化類,可以配置lazy-init物件。測試:

在類中編寫兩個方法:

public void init() 

public void destory()

然後在xml中指定:

最後測試即可:

@test

public void testlifecycle()

##7、@autowire

之前介紹的全部都是xml檔案的配置,這裡介紹註解的使用,通常情況下,註解使用起來更加方便。@autowire註解可以寫在屬性名稱上,寫在setter方法上,寫在構造器上,也可以寫在任何可以設定物件的方法上。@autowire預設是通過型別搜尋的,如果出現兩個例項型別相同的情況,可以使用@qualifier註解指定名稱。 ##8、@resource

@resource預設是通過名稱搜尋,當名稱找不到是通過型別進行搜尋。 @resource可以放在setter方法,設定屬性的方法和字段上,但是不能放在構造方法上。 ##9、12.@component @service @controller @repository

具體差別不大,配合xml中的:

可以將註解宣告的類載入到容器中去,可以在括號裡面指定名稱,不指定的話預設按類的名稱的首字母小寫的值。

##9、xml和註解的優缺點

xml更加集中,方便管理,和註解更加分散,但是更加簡潔。

##10、ioc介紹及意義

ioc指的是控制反轉,也可以叫依賴注入。以前我們需要某個物件是自己來建立,通過ioc我們可以直接從容器中獲取我們需要的物件而不需要自己建立。ioc的意義如下,方便對型別的生命週期、依賴關係進行統一管理,實現物件之前的解耦。這裡實現解耦可以從以下幾個方面理解。首先,之前a和b兩個物件互相一依賴,如果進行修改,那麼需要在源**中修改,而現在只需要在xml檔案中進行修改,方便修改和維護,其次,由自己建立物件變成由容器建立物件,自己只需要有有個引用即可。相當於乙個主機板上有記憶體條的介面,需要的時候認為的加上這個記憶體條和乙個主機板上本來就有記憶體條的關係,前面實現了解耦,後面沒有實現解耦。最後,依賴物件的生命週期有自己管理變成由容器管理實現了一定的解耦。

Spring之IOC 學習筆記

ioc ioc理論的背景 依賴注入 di ioc的好處 ioc的通俗理解 ioc ioc inversionof control,控制反轉 是 spring 的核心,貫穿始終。所謂 ioc,對於 spring 框架來說,就是由 spring 來負責控制物件的生命週期和物件的關係 傳統開發模式 物件之...

spring學習之IoC容器

jinnianshilongnian 寫道 理解ioc容器問題關鍵 控制的哪些方面被反轉了?1 誰控制誰?為什麼叫反轉?ioc容器控制,而以前是應用程式控制,所以叫反轉 2 控制什麼?控制應用程式所需要的資源 物件 檔案 3 為什麼控制?解耦元件之間的關係 4 控制的哪些方面被反轉了?程式的控制權發...

Spring框架學習之IOC 二

spring框架學習之ioc 二 接著昨天的內容,下面開始ioc基於註解裝配相關的內容 在 classpath 中掃瞄元件 特定元件包括 component 基本註解,標識了乙個受 spring 管理的元件 respository 標識持久層元件 service 標識服務層 業務層 元件 contr...