天天看點

JavaIOC架構篇之Spring Framework

目前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定位

JavaIOC架構篇之Spring Framework

首先我們可以看到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

勘誤&感謝

  本系列文章資料來源很多出自于網際網路和在下本身的見解,受限于個人技術能力水準和其他相關知識的限制,相關見解錯誤或者資料引用錯誤請各位幫助留言校正!引用資料多來自于網際網路,在下在引用前會遵循各位前輩或者部落客的引用說明表示感謝,但網際網路資料多是轉發再轉發或存在遺漏請原作者内信聯系指正。

雜家不如專家,精益求精