Spring IOC--控制反轉
1.Spring IOC
IOC全稱Inversion Of Control,被翻譯成控制反轉
控制反轉是指程式中物件的獲取方式發生反轉,由最初的NEW方式
建立,轉變為由第三方框架建立,注入(DI),它降低物件之間的
耦合度
Spring容器採用DI方式實現IOC控制,IOC是Spring框架的基礎和
核心
DI全稱是Dependency Injection,被翻譯成依賴注入,依賴注入的
基本原理是將一起工作具有關聯關係的物件通過方法引數傳入,建
立關係,因此容器的工作就是建立Bean物件時注入依賴關係
IOC是一種思想,而DI是實現IOC的主要技術途徑
DI主要有兩種注入方式,即Setter注入和構造器注入
1)Setter注入
public class B{}
public class A{
private B b;
public void setB(B b){
this.b = b;
}
}
2)構造器注入
public class B{}
public class A{
private B b;
public A(B b){
this.b = b;
}
}
自動裝配
Spring容器可以自動裝配(autowire)相互協作Bean之間的關聯
關係,autowire可以針對單個Bean進行設定,方便之處在於減少
XML注入配置
在配置檔案中,可以在<bean>標籤中使用autowire屬性指定自動
裝配的規則,一共有三種型別值
byName:根據屬性名自動裝配,此選項將檢查容器,根據名字查
找與屬性名一致的Bean,然後將其與屬性自動裝配(
setter注入)
byType:如果容器中存在一個與指定屬性型別相同的Bean,則將
與此屬性自動裝配(setter注入)
constructor:與byType方式類似,不同之處在於它應用於構造器
方式(構造器注入)
2.引數值注入
1)注入基本值
<value>標籤可以通過字屬性符串指定或構造器引數的值,容器
將字串從java.lang.String型別轉換為實際的屬性或構造器參
數型別,然後給Bean物件注入
2)注入Bean物件
注入外部Bean(引用方式,方便重用)
3)注入集合
通過<list>,<set>,<map>,<props>標籤來定義與Java中
對應的List,Set,Map及Properties的屬性值
List,Set,Map及Properties都可以採用引入方式,<util:list>
<util:set>,<util:map>,<util:properties>
4)注入Spring表示式
Spring表示式語言,和EL表示式在語法上很相似,可以讀取一
個Bean物件或集合中的資料
5)注入NULL或空字串
Spring將屬性的空引數當做空String
<bean>
<property name="name" value=""/>
</bean>
如果需要注入NULL,可以使用<null>標籤
<bean>
<property name="name">
<null/>
</property>
</bean>
3.基於註解依賴注入
具有依賴關係的Bean物件,可以使用以下任意一種註解實現注入
@Autowired/@Qualifer
可以處理構造器注入和Setter注入
@Autowired寫在構造器或set方法前,宣告需要為其注入Bean,
@Qualifer寫在引數前面,宣告注入Bean的id
@Autowired/@Qualifer也可以寫在屬性上,作用和寫在set方
法上類似,但是隻會執行一行程式碼(賦值程式碼)
注意:注入物件是單例時,@Qualifer可省略,此時Spring按照
引數型別匹配引數值
@Resource
只能處理Setter注入
@Resource也可以寫在屬性上,作用和寫在set方法上類似,但
是隻會執行一行程式碼(賦值程式碼)
注意:注入物件是單例時,(name="識別符號")可省略,此時
Spring按照引數型別匹配引數值
問題:
@Autowired與@Resource的區別
注入基本值或Spring表示式
@Value註解可以注入基本值或Spring表示式值
語法:
@Value("張三")
@Value("#{user.name}")
相關文章
- Spring之初識Ioc(控制反轉)以及引入SpringSpring
- Spring基礎 - Spring核心之控制反轉(IOC)Spring
- Day66 Spring IOC(控制/反轉)Spring
- Spring 控制反轉和依賴注入Spring依賴注入
- Spring框架系列(3) - 深入淺出Spring核心之控制反轉(IOC)Spring框架
- Spring理論基礎-控制反轉和依賴注入Spring依賴注入
- 理解Spring中依賴注入(DI)與控制反轉(IoC)Spring依賴注入
- Spring---IoC(控制反轉)原理學習筆記【全】Spring筆記
- Spring入門學習手冊 1:最簡單的反轉控制Spring
- 前端解讀控制反轉(IOC)前端
- 依賴注入和控制反轉依賴注入
- 深入理解spring容器中的控制反轉(IOC)和依賴注入(DI)Spring依賴注入
- 前端理解依賴注入(控制反轉)前端依賴注入
- IoC(控制反轉)的理解筆記筆記
- J2EE模式-控制反轉模式
- 極簡架構模式-控制反轉架構模式
- 控制反轉(IOC容器)-Autofac入門
- .NET IoC模式依賴反轉(DIP)、控制反轉(Ioc)、依賴注入(DI)模式依賴注入
- 8.(轉)控制反轉(IoC)與依賴注入(DI)依賴注入
- Spring系列第二講 控制反轉(IoC)與依賴注入(DI),晦澀難懂麼?Spring依賴注入
- 小例子 理解 Laravel 中的 控制反轉模式Laravel模式
- Java:控制反轉(IoC)與依賴注入(DI)Java依賴注入
- PHP 控制反轉(IoC) 和 依賴注入(DI)PHP依賴注入
- PHP 控制反轉(IOC)和依賴注入(DI)PHP依賴注入
- 淺析依賴倒轉、控制反轉、IoC 容器、依賴注入。依賴注入
- 深入理解IoC(控制反轉)、DI(依賴注入)依賴注入
- 用最簡單的方式理解 IoC 控制反轉
- php實現依賴注入(DI)和控制反轉(IOC)PHP依賴注入
- 反射,註解,動態代理,依賴注入控制反轉反射依賴注入
- 我對控制反轉以及依賴注入的認識依賴注入
- 深入理解控制反轉(IoC)和依賴注入(DI)依賴注入
- 四、GO程式設計模式:委託和反轉控制Go程式設計設計模式
- CommunityToolkit.Mvvm8.1 IOC依賴注入控制反轉(5)UnityMVVM依賴注入
- 對控制反轉和依賴注入的突然頓悟依賴注入
- 學習記錄-Laravel 核心 依賴注入 控制反轉 反射Laravel依賴注入反射
- 什麼是控制反轉(IOC)?什麼是依賴注入?依賴注入
- 一統江湖的大前端(10)——inversify.js控制反轉前端JS
- PHP DIY 系列------框架篇:8. 依賴注入和控制反轉PHP框架依賴注入