我的理解是,spring核心是IoC,同時也實現了AOP。

IoC是利用反射機制,管理對象的創建和屬性賦值的一個工廠,也就是由spring容器來管理對象的創建以及將對象的依賴傳遞進來,換句話說就是完成對象的實例化,并給這個對象的屬性賦值。這個過程對于程序員來講是透明的,對于程序員來講,就是在配置文件中定義bean,并且為bean的屬性賦值。

與jndi相比,jndi是用戶(程序員)從容器中根據jndi名稱查找依賴,而ioc是容器在對象初始化的時候不等對象請求就將依賴主動傳遞給它。

 

AOP是面向方面編程。我們采用面向對象的思想,對實體和業務邏輯進行了封裝,得到具有屬性和方法的對象。Aop中,方面的意思是,在業務處理中,在一個或多個業務模塊中會遇到共同的非業務性的功能需求,比如,記錄日志、事務管理、權限驗證等,這些需求就叫做方面。

AOP就是對這些方面進行提取,使得這些操作與需求的業務分離,而利用AOP(利用代理技術和反射)將貫穿在各個模塊中的橫切關注點(上文中的方面)自動耦合到各個業務對象中。

Spring提供了AOP的支持,實現方式是在配置文件中配置即可。關鍵字是advisor和advice,我用的最多的是事務管理。