轉載自:https://mp.weixin.qq.com/s/VM6INdNB_hNfXCMq3UZgTQ
控制反轉(inversion of control), 是一種設計思想,DI(dependency injection依賴注入)是IOC的一種方法.未使用IOC的程序中,我們使用面向對象編程,對象的創建和對象之間的依賴關系完全硬編碼在程序中,對象的創建是由程序自己控制的.控制反轉就是將對象的創建轉移給了第三方.IOC就我認為是:獲得依賴對象的方式反轉了
【硬編碼:是將數據直接其納入到程序或其他可執行程序或其他可執行對象的源代碼中的軟件開發時間,與外部獲取數據或在運行時生成數據不同。硬編碼數據通常只能通過編輯源代碼或重新編譯可執行文件來修改。】
IOC是Spring框架的核心內容, 使用了多種方式完美的實現了IOC,xml配置與注解形式,新版本的spring也可以零配置實現IOC
Spring容器在初始化的時候先讀取配置文件,根據配置文件或者元數據創建與組織對象存入容器中,程序使用時在從IOC容器中取出需要的對象
采用XML方式配置Bean的時候,Bean的定義信息是和實現分離的,而采用注解的方式可以把兩者合為一體,Bean的定義信息直接以注解的形式定義在實現類中,從而達到了零配置的目的。
控制反轉是一種通過描述(XML或注解)並通過第三方去生產或獲取特定對象的方式。在Spring中實現控制反轉的是IoC容器,其實現方法是依賴注入(Dependency Injection,DI)。