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對象。