第六章、以XML方式配置切面
阿新 • • 發佈:2020-09-16
在bean配置檔案中,所有的Spring AOP配置都必須定義在<aop:config>
元素內部。對於每個切面而言,都要建立一個<aop:aspect>
元素來為具體的切面實現引用後端bean例項。
切面bean必須有一個識別符號,供<aop:aspect>
元素引用。
<bean id="calculatorLoggingAspect" class="com.jdy.spring2020.aop.CalculatorLoggingAspect"/> <aop:config> <aop:aspect id="calculatorLoggingAspect" order="0" ref="calculatorLoggingAspect"> </aop:aspect> </aop:config>
二、宣告切入點
-
切入點使用<aop:pointcut>元素宣告。
-
切入點必須定義在<aop:aspect>元素下,或者直接定義在<aop:config>元素下。
-
定義在<aop:aspect>元素下:只對當前切面有效
-
定義在<aop:config>元素下:對所有切面都有效
-
-
基於XML的AOP配置不允許在切入點表示式中用名稱引用其他切入點。
<bean id="calculatorLoggingAspect" class="com.jdy.spring2020.aop.CalculatorLoggingAspect"/> <aop:config> <aop:pointcut id="pointcut01" expression="execution( com.jdy.spring2020.scan.service.impl.ArithmeticCalculatorImpl.add(int,int))"/> <aop:aspect id="calculatorLoggingAspect" order="0" ref="calculatorLoggingAspect"> </aop:aspect> </aop:config>
三、宣告通知
-
在aop名稱空間中,每種通知型別都對應一個特定的XML元素。
-
通知元素需要使用<pointcut-ref>來引用切入點,或用<pointcut>直接嵌入切入點表示式。
-
method屬性指定切面類中通知方法的名稱
<bean id="calculatorLoggingAspect" class="com.jdy.spring2020.aop.CalculatorLoggingAspect"/> <aop:config> <aop:pointcut id="pointcut01" expression="execution( com.jdy.spring2020.scan.service.impl.ArithmeticCalculatorImpl.add(int,int))"/> <aop:aspect id="calculatorLoggingAspect" order="0" ref="calculatorLoggingAspect"> <aop:after method="after" pointcut-ref="pointcut01">
</aop:after> </aop:aspect> </aop:config>