1. 程式人生 > 實用技巧 >二、Spring IOC 依賴注入

二、Spring IOC 依賴注入

一、什麼是IOC?什麼是DI?

IOC 全稱指的是 Inverse Of Control 控制反轉。

原來我們使用Spring之前物件都是通過程式碼 new 物件()來自己進行建立。

現在使用了Spring之後。只需要把物件建立交給spring進行配置,那麼spring就會幫我們new出物件來。

DI 指的是Dependency Injection 。是依賴注入的意思,在我們建立物件的過程中,把物件依賴的屬性注入到我們的類中。

只需要配置就可以把依賴的物件的值注入到引用中。

關係:依賴注入不能單獨存在,需要在ioc基礎之上完成操作

DI(依賴注入)

一個物件需要另外一個物件時,無需在程式碼中建立被呼叫者,而是依賴於外部容器,由外部容器建立後傳遞給程式。

二、Spring的ioc操作

1.把物件的建立交給spring進行管理

2.IOC操作主要有兩種方式實現:

(1)IOC的配置檔案方式

(2)IOC的註解方式

3.IOC底層原理主要使用到技術:

a.xml配置檔案;

b.dom4j解決xml;

c.工廠設計模式;

d.反射。

工廠模式解耦合:

IOC原理解耦合:

4. IOC入門案例

第一步 匯入jar包

(1)解壓資料zip檔案

Jar特點:都有三個jar包

(2)做spring最基本功能時候,匯入四個核心的jar包就可以了,另外兩個是日誌的

commons-logging-1.2.jar

log4j-1.2.16.jar

(3)匯入支援日誌輸出的jar包

第二步 建立類,在類裡面建立方法

public class User {
    public void add(){
        System.out.println("Add~~~~~~~~~~~");
    }
    public static void main(String[] args) {
        //原始做法
        User user = new User();
        user.add();
    }
}

第三步 建立spring配置檔案,配置建立類

(1)spring核心配置檔名稱和位置不是固定的

- 建議放到src下面,官方建議applicationContext.xml

(2)引入schema約束(spring在啟動的時候需要驗證xml文件,約束的作用就是來驗證配置檔案的xml文件語法的正確性)

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop" 
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="
        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

(3)配置物件建立

<bean id = "user" class="com.taiping.dto.UserDto"></bean>

第四步 寫程式碼測試物件建立

(1)這段程式碼在測試中使用

//載入spring配置檔案,根據建立物件
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
//2.得到配置建立的物件
User user = (User) applicationContext.getBean("user");
User.add();

5.配置檔案沒有提示問題

1 spring引入schema約束,把約束檔案引入到eclipse中

(1)複製約束路徑

http://www.springframework.org/schema/beans/spring-beans-4.0.xsd

三、Spring整合web專案原理

1 載入spring核心配置檔案,

* new物件,功能可以實現,效率很低

2 實現思想:把載入配置檔案和建立物件過程,在伺服器啟動時候完成

3 實現原理

(1)ServletContext物件

(2)監聽器

(3)具體使用:

- 在伺服器啟動時候,為每個專案建立一個ServletContext物件

- 在ServletContext物件建立時候,使用監聽器可以具體到ServletContext物件在什麼時候建立

- 使用監聽器監聽到ServletContext物件建立時候,

-- 載入spring配置檔案,把配置檔案配置物件建立

-- 把創建出來的物件放到ServletContext域物件裡面(setAttribute方法)

- 獲取物件時候,到ServletContext域得到 (getAttribute方法)

spring約束:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:aop="http://www.springframework.org/schema/aop"
    xmlns:tx="http://www.springframework.org/schema/tx"
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
    http://www.springframework.org/schema/beans/spring-beans.xsd
    http://www.springframework.org/schema/context
    http://www.springframework.org/schema/context/spring-context.xsd
    http://www.springframework.org/schema/aop
    http://www.springframework.org/schema/aop/spring-aop.xsd
    http://www.springframework.org/schema/tx
    http://www.springframework.org/schema/tx/spring-tx.xsd">