博客 / 詳情

返回

Spring-IOC理論推導

  1. UserDao接口
  2. UserDaoImpl實現類
  3. UserService業務接口
  4. UserServiceImpl業務實現類

在之前的業務中,用户的需求可能會影響我們的代碼,我們需要根據用户的需求去修改代碼!如果程序代碼量非常大,修改一次的成本代價十分昂貴!

UserServiceImpl使用set接口

private UserDao userDao;

//利用set進行動態實現值的注入
public void setUserDao(UserDao userDao){
    this.userDao = userDao;
}
  • 之前程序是主動創建對象,控制權在程序員手裏
  • 使用set注入後,程序不再具有主動性,而是變成了被動的接受對象

這種思想,從本質上解決了問題,程序員不需要再去管理對象的創建了,系統的耦合性大大降低,可以更加專注的在業務實現上。這就是IOC的原型。

IOC本質

控制反轉IoC(Inversion of Control),是一種設計思想,DI(依賴注入)是實現IoC的一種方法,也有人認為DI只是IoC的另一種説法。沒有IoC的程序中,我們使用面向對象編程,對象的創建與對象間的依賴關係完全硬編碼在程序中,對象的創建由程序自己控制,控制反轉後將對象的創建轉移給第三方。

採用xml方式配置Bean的時候,Bean的定義信息是和實現分離的,而採用註解的方式可以把兩者合為一體,Bean的定義信息直接以註解的形式定義在實現類中,從而達到了零配置的目的。

控制反轉是一種通過描述(xml或註解)並通過第三方去生產或獲取特定對象的方式。在Spring中實現控制反轉的是IoC容器,其實現方法是依賴注入(Dependency Injection,DI)。

user avatar shenbl 頭像 u_16213586 頭像 liugongzi 頭像
3 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.