詳述SpringAOP實現及執行過程

2021-09-25 07:35:20 字數 1778 閱讀 2901

需要引的包

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...