Spring核心之控制反轉(IoC)

2021-10-08 14:19:28 字數 2062 閱讀 7267

概念

控制反轉(inversion of control,縮寫ioc)是物件導向程式設計中的一種設計原則,可以用來減低計算機**之間的耦合度。其中最常見的方式叫做依賴注入(dependency injection,簡稱di),還有一種方式叫「依賴查詢」(dependency lookup)。通過控制反轉,物件在被建立的時候,由乙個調控系統內所有物件的外界實體將其所依賴的物件的引用傳遞給它。也可以說,依賴被注入到物件中。

應用傳統的業務實現方法:

userdao 介面

package com.example.demo.dao;

public

inte***ce

userdao

userdaoimpl 實現類

package com.example.demo.dao;

public

class

userdaoimpl

implements

userdao

}

userservice 業務介面

package com.example.demo.service;

public

inte***ce

userservice

userserviceimpl 業務實現類

package com.example.demo.service;

import com.example.demo.dao.userdao;

import com.example.demo.dao.userdaoimpl;

public

class

userserviceimpl

implements

userservice

}

測試一下

@springboottest

class

}

正常情況下,cmd會輸出:獲取使用者資料

ps:這裡使用的是spring boot專案裡面自動生成的測試類

ioc思想的引入:

假如業務變動頻繁,一會要用mysql資料庫,一會要用oracle資料庫

我們需要寫多個userdao的實現類,如userdaomysqlimpl、userdaooracleimpl

根據具體需要來決定引用哪個實現類,然後去service實現類裡面修改對應的實現

如果**變多,這樣的修改就很繁瑣,為解決這個問題,我們引入了ioc的思想

新增兩個userdao的實現類,userdaomysqlimpl 和 userdaooracleimpl

package com.example.demo.dao;

public

class

userdaomysqlimpl

implements

userdao

}

package com.example.demo.dao;

public

class

userdaooracleimpl

implements

userdao

}

對userserviceimpl進行修改:

package com.example.demo.service;

import com.example.demo.dao.userdao;

public

class

userserviceimpl

implements

userservice

@override

public

void

getuser()

}

再次進行測試:

@springboottest

class

}

正常情況下,cmd會輸出兩條資料:mysql獲取使用者資料,oracle獲取使用者資料

Spring之控制反轉(IOC)

目錄 0.面向介面程式設計思想 1.依賴倒置原則與好萊塢原則 2.控制反轉 3.依賴注入 4.spring是如何實現依賴注入的?4.1 beanfactory 4.2 factorybean 面向介面程式設計 不針對實現程式設計,針對超型別程式設計。超型別包括繼承和多型。而依賴倒置原則與好萊塢原則可...

Spring控制反轉

spring控制反轉 ioc 是為了降低物件之間的耦合性,在沒使用ioc之前都是在a物件內部new乙個b物件去使用,這樣物件之間的耦合性太高,控制反轉就是為了降低物件之間的耦合性,所有物件的控制權都交給了第三方容器ioc,由ioc來幫忙建立及注入依賴物件 首先新建乙個student介面及其實現類 介...

Spring之依賴注入 控制反轉

借用李剛老師書中的例子,在原始社會,人要砍柴,那麼他就要自己去製作一把斧子。這樣的方式的耦合度很高,斧子還要原材料,打磨工具等,這樣任何乙個環節的問題,都會導致其他環節的問題,那麼在 中,一旦要修改乙個類的實現時,就可能需要修改一系列的依賴。在工業社會,人要一把斧子,只需要去工廠獲取,它的實現類是對...