話說,學習spring也快大半年了,寫業務層代碼也寫了半年之久了,對於spring中的一些核心技術如今仍是似懂非懂的,非常糾結啊。。。java
最近一直看別人寫的對於這一塊的理解,因而乎,我有點懂了。spring
首先來談談什麼是Ioc(Inversion of controler,控制反轉)編程
基本的java思想:Java程序中的每一個業務邏輯至少須要兩個或者以上的對象來協做完成、一般,每個對象在使用他的合做對象的時候,本身均要使用像new.object()這樣的語句來完成合做對象的申請。這樣對象之間的耦合度很高。學習
而Ioc的思想是:spring容器來實現這些相互依賴對象的建立,協調工做。對象只須要關係業務邏輯自己就能夠了。這樣的話,對象如何獲得他的合做對象的責任就被反轉了。spa
Ioc的一個重點是在系統運行中,動態的向某個對象提供他們所須要的對象。這一點是經過DI(dependency injection,依賴注入);來實現的。代理
對於實現依賴注入,就須要用到java1.4以後的的新特性-反射(reflection),他容許程序在運行的時候動態的生成對象,執行對象的方法,改變對象的屬性,spring正是經過這一特性來實現注入的。對象
再來看看AOP(Aspect Oriented Programing)-面向切面編程呢?get
首先看看學習AOP以前須要瞭解的術語io
鏈接點(jointPoint)容器
切點(pointCut)
加強(advice)
目標對象(target)
引介(introduction)
代理(proxy)
切面(aspect)
AOP的實現者
AspectJ
AspectWerkz
JBoss AOP
spring AOP