需要引的包
calculatorservice類**
import org.springframework.stereotype.component;
@component
public class calculatorservice implements icalculatorservice
@override
public int div(int a, int b)
}
icalculatorservice介面**
public inte***ce icalculatorservice
calculatoraspect類**
@aspect
@component
public class calculatoraspect
@after("execution(int mul(int,int))")
public void after(joinpoint joinpoint)
}
test類**
public class test
}
spring配置檔案中需要用到這些**(第一行**使用來指定掃瞄的包的位置 由於上述所列出來的類均在com.jd包下,第二行**使用來指定使用哪種**方式後面在詳細敘述)
①.首先在程式執行時會先掃瞄com.jd包
②.再在類中尋找加有@aspect註解的類
③.再找到各個方法並獲取到各個方法上的註解中的value值
④.獲取註解後讀取註解中的value並將註解中的值與被**類的對應方法進行匹配
注意:此中@before(after)("execution(int mul(int,int))")是匹配相應的方法來進行後置和前置增強 mul是標誌方法 int,int標明引數列表
⑤.建立相應的**類物件放在ioc容器裡
⑥.執行main中的calculator.mul()方法
⑦.列印結果
當spring配置如下時
是jdk**實現,getbean方法只能通過被**類的介面實現類來獲取該**類
測試**如下:
public static void main(string args)
測試結果如圖
當spring中配置如下時
為cglib實現方式
測試**同jdk**相同
測試結果如圖
為何沒有新增入asm和cglib的jar包還可以使用cglib**方式?
在spring的core已經融合進了這些包
所以有此結果
SpringAOP實現及執行過程
新建乙個計算器icalculatorservice介面 public inte ce icalculatorservice 實現這個介面 service public class calculatorservice implements icalculatorservice override pub...
Spring AOP實現方式
spring中4中aop區別 1.advisor類 需要依賴spring介面,spring版本比較低時可以採取這種方式 2.適合使用者從低版本spring遷移到高版本spring,重複利用以前advice類情況 3.使用配置檔案形式定義切面,比較推薦的一種方式,使用於對維護性要求較高的情況 4.as...
Spring AOP簡單實現
下面用乙個簡單示例演示aop的使用,在執行目標方法前執行日誌輸出。這也是aop最重要的作用,分離與業務無關的 建立target類,是被 的物件,有乙個execute方法。package com.home.web.manager public class target 建立通知類,可以攔截目標物件的e...