目前Java體系常見的IOC架構有Google Guice,PicoContainer,Dagger,Spring Framework,本篇來進行講解Spring Framework的IOC(Spring IOC)
歡迎檢視Java開發之上帝之眼系列教程,如果您正在為Java後端龐大的體系所困擾,如果您正在為各種繁出不窮的技術和各種架構所迷茫,那麼本系列文章将帶您窺探Java龐大的體系。本系列教程希望您能站在上帝的角度去觀察(了解)Java體系。使Java的各種後端技術在你心中子產品化;讓你在工作中能将Java各個技術了然于心;能夠即插即用。本篇我們一起來了解SpringIOC相關知識以及其核心點。
目前Java體系常見的IOC架構有Google Guice,PicoContainer,Dagger,Spring Framework,本篇來進行講解Spring Framework的IOC(Spring IOC) 本篇示例代碼下載下傳
1.什麼是IOC?
IOC的意思就是控制反轉(Inversion of Control),将原POJO内部管理其他對象的引用轉換為IOC容器統一管理對象引用,在需要使用的時候從容器擷取Bean即可。
将對象交給IOC容器統一管理,是為了更好使用DI(Dependency Inject,依賴注入)進行POJO之間依賴關系的解耦。DI(Dependency Inject,依賴注入)即代碼裡對象之間的依賴關系轉移到容器中進行裝配,這樣能很靈活地通過面向接口進行程式設計。
2.了解SpringIOC定位
首先我們可以看到Spring4的龐大子產品中(這裡我們不針對Spring子產品逐一介紹,将會在第四章:Spring專欄進行特别介紹),IOC功能位于Spring核心容器(Core Container子產品)中,也是Spring生态圈的所有子產品中的核心支撐。
3.快速使用Spring IOC
Spring的XML配置檔案如下,這裡使用XML配置檔案的形式配置SpringBean(對于了解比較友好) 示例代碼下載下傳
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd">
<bean class="com.leanspringioc.AdminUser" id="adminUser"/>
<bean class="com.leanspringioc.VipUser" id="vipUser"/>
<bean class="com.leanspringioc.TestIOC" id="testIOC">
<property name="iUser" ref="vipUser"/>
</bean>
</beans>
/**
* 在applicationContext.xml檔案中向testIOCBean中注入vipUser和adminUser進行測試
*
* @param args
*/
public static void main(String[] args) {
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
TestIOC testIOC = (TestIOC) context.getBean("testIOC");
testIOC.say();
}
4.Spring IOC相關常用注解
自動掃描裝配Bean的相關注解
- @Component 将java類标記成一個Spring Bean元件
- @Service 将業務層實作類标記成一個Spring Bean元件
- @Controller 将表現層類标記成一個Spring Bean元件
- @Repository 将一個持久層實作類标記成一個Spring Bean元件
作用域相關注解
- @scope 用來指定bean的作用域,元件預設是單例的作用域,不使用單例則聲明此注解
自動裝配Bean相關注解
- @Autowired 通過類型比對,通過名稱則需要Spring的@Qualifier注解配合
- @Resource 根據Bean的名稱去比對,擷取不到再根據類型
Java開發之上帝之眼系列教程其他文章
- Java開發之上帝之眼系列教程前言和章節目錄彙總
本篇部分資料來源如下(排名不分先後)
https://www.cnblogs.com/hellokitty1/p/5074743.html
勘誤&感謝
本系列文章資料來源很多出自于網際網路和在下本身的見解,受限于個人技術能力水準和其他相關知識的限制,相關見解錯誤或者資料引用錯誤請各位幫助留言校正!引用資料多來自于網際網路,在下在引用前會遵循各位前輩或者部落客的引用說明表示感謝,但網際網路資料多是轉發再轉發或存在遺漏請原作者内信聯系指正。
雜家不如專家,精益求精