Spring IOC自動注入
它的好處,是是一個超級大工廠,我們不用再管理對象,實際上,IOC分爲兩個部分:
`
其中
- Dependency Lookup指的是依賴查找:他是當前軟件實體主動去某個服務註冊地查找其依賴的那些服務。
- Dependency Injection指的是依賴注入:他是當前軟件實體被動接受其他組件被IOc容器注入。
他的好處,舉個例子,我們平常寫的代碼有三個部分:
- controller
- service
- dao
他們之間的依賴關係是
我們看一下,如果沒有IOC,我們該如何實現ControllerA
// 先構造DaoA,DaoB,DaoC,DaoD
DaoA da = new DaoA();
DaoB db = new DaoB();
DaoC dc = new DaoC();
Daod dd = new DaoD();
// 構造Service A,Service B
ServiceA sa = new ServiceA(da, db);
ServiceB sb = new ServiceB(dc, dd);
// 構造ControllerA
ControllerA ca = new ControllerA(sa, sb);
看到了嗎,構建一個Controller類,需要提前new一系列相關的對象,這樣實在太麻煩了,在spring boot中是怎麼做的?
@Controller
class ControllerA
{
@Autowired
ServiceA sa;
@Autowired
ServiceA sb;
}
@Service
class ServiceA
{
@Autowired
DaoA da;
@Autowired
DaoB db;
}
@Service
class ServiceA
{
@Autowired
DaoC dc;
@Autowired
DaoD dd;
}
看起來似乎沒有簡便多少,但實際上,對比一下,你會發現。每個類在構造的時候,只需將和它相關的類注入即可,並不需要考慮相關類的如何創建。比如,ControllerA只需要考慮ServiceA,ServiceA就好,至於這兩個類怎麼構建的,不用管,SPringIOC會替你管理。