1. 程式人生 > >控制反轉和依賴註入的關系總結

控制反轉和依賴註入的關系總結

ack 註解 變量 java 方法 顯式 接口 autowire tail

借鑒http://blog.csdn.net/zhoudaxia/article/details/31763677

控制反轉:把傳統上由程序代碼直接操控的對象的調用權交給外部容器,通過容器來實現對象組件的裝配和管理。所謂的“控制反轉”就是組件對象的控制權轉移了,從程序代碼本身轉移到了外部容器。

實現控制反轉的兩種方式:依賴註入和依賴查找。

依賴註入有四種實現方式:

1.基於接口:實現特定接口以供外部容器註入所依賴類型的對象,接口中定義要註入依賴對象的方法。

2.基於setter方法:實現特定屬性的public set方法,來讓外部容器調用,以傳入所依賴類型的對象。

3.基於構造函數:實現特定參數的構造函數,在新建對象時傳入所依賴類型的對象。

4.基於註解:基於Java的註解功能,在私有變量前加“@Autowired"等註解,不需要顯式的定義以上三種代碼,便可以讓外部容器傳入對應的對象。該方案相當於定義了public 的set方法,但是因為沒有真正的set方法,從而不會為了實現依賴註入導致暴露了不該暴露的接口(因為set方法只想讓容器訪問來註入而不希望其他依賴此類的對象訪問)

控制反轉和依賴註入的關系總結