IOC與DI簡介

IOC:控制反轉(Inverse Of Control)
spring

在沒用spring框架以前咱們是這樣寫程序的:編程

private UserDao userDao = new UserDaoImpl();框架

也就是說UserServiceImpl類中有哪一個具體類屬性由他本身決定,此時的編程完徹底全是控制在咱們寫程序人的手裏,咱們本身new userDao,也本身決定用哪一個userDao的實現。此時咱們是依賴於具體的實現類。spa

在使用了spring框架以後:code

private UserDao userDao; 
xml

此時只指定了接口,沒有具體的實現類,控制權限交給了spring來管理。由spring來初始化userDao對象

控制反轉也就是說spring控制了原來的具體實現爲抽象的概念,原來是直接針對具體的實現來編寫代碼,使用userDao的時候,直接使用其實現。接口

如今使用了spring以後,這個userDao交由spring來控制了,咱們要作的就是作具體的實現。這樣達到了面對接口編程。ci

控制反轉概念很模糊,也有不少種版本解釋,可是不必死扣具體的理論。理解是什麼意思便可。get


DI:依賴注入(Dependency Injection)

1
2
3
< bean id = "userService" class = "com.fz.service.UserService" >
    < property name = "userDao" ref = "userDao" ></ property >
</ bean >

在這個userService中有個屬性是userDao接口,假如咱們調用userSercie的userAdd方法的時候,其實也就是在userService的實現類裏面調用userDao的userAdd方法。這個userAdd方法的具體實現類依賴於spring初始化的userDao這個對象。

因此,能夠理解爲這個userService對象依賴於spring容器注入的userDao對象。






相關文章
相關標籤/搜索