1. 程式人生 > >三、spring的AOP

三、spring的AOP

AOP的基本認識

Aspect Oriented Programming,面向切面程式設計,通過預編譯方式和執行期動態代理實現程式功能的統一維護的一種技術

利用AOP可以對業務邏輯的各個部分進行隔離,從而使得業務邏輯各部分之間的耦合度降低,提高程式的可重用性,同時提高了開發的效率

AOP的實現原理

Spring內部是使用動態代理的方式實現AOP

  • JDK動態代理:只能對實現介面的類產生代理
    • 產生代理物件的方法:Proxy.newProxyInstance(ClassLoader loader, Class<?>[] interfaces, InvocationHandler h)
      • Class<?>[] interfaces用來指明生成哪個物件的代理物件,通過介面指定,所以JDK動態代理只能對實現介面的類適用
  • Cglib動態代理:可以對沒有實現介面的類產生代理
    • 繼承這個類,生成該類的子類物件
      • 所以這個類不能是final修飾的(無法繼承)
  • Spring實現AOP時,如果這個類實現了介面,預設使用JDK動態代理;如果這個類沒實現介面,就使用Cglib產生代理

AOP的使用

XML方式

註解方式