学习笔记:8_Spring_AOP之基于XML形式配置AOP

1、 习惯

一般情况下还是习惯性利用注解方式进行AOP配置。

一些主流的AOP框架是兼容注解的,因此注解方式有很强的兼容性。

2、  接口

package com.spring.aop3;
public interface ITest {
public String myTest(String a,String b);
}

3、  接口实现类

package com.spring.aop3;
public class Test implements ITest {
public String myTest(String a,String b){
return a+"|||"+b;
}
}

4、  切面类

package com.spring.aop3;
import java.util.Arrays;
import org.aspectj.lang.JoinPoint;
public class TestAspect {
public void myBefore(JoinPoint jp){
String methodName=jp.getSignature().getName();//获得被调用的方法名
Object[] args=jp.getArgs();//获得被调用方法的参数
System.out.println("前置通知:"+methodName+"方法,参数为:"+Arrays.asList(args));
}
public void myAfter(JoinPoint jp){
String methodName=jp.getSignature().getName();//获得被调用的方法名
Object[] args=jp.getArgs();//获得被调用方法的参数
System.out.println("后置通知:"+methodName+"方法,参数为:"+Arrays.asList(args));
}
}

扫描二维码关注公众号,回复: 1579909 查看本文章

5、 配置文件

<!-- 目标对象实例(被代理类实例) -->
<bean id ="test" class="com.spring.aop3.Test"/>
<!-- 切面类实例 -->
<bean id ="testAspect" class="com.spring.aop3.TestAspect"/>
<aop:config>
<!-- 定义一个可重用的切面表达式,通知类型只需要引用id即可  -->
<aop:pointcut expression="execution(public String com.spring.aop3.Test.*(..))" id="ip"/>
<!-- 指定切面类,ref表示引入切面类的bean,order表示优先级 -->
<aop:aspect id="aspect" ref="testAspect" order="0">

<!-- 这里面写切面的前置通知、后置通知等 -->
<!-- aop:通知类型,method通知的方法名,pointcut表示通知的切面表达式 -->
<aop:before method="myBefore" pointcut="execution(public String com.spring.aop3.Test.*(..))"/>
<!-- pointcut-ref表示引用重用的切面表达式 -->
<aop:after method="myAfter" pointcut-ref="ip"/>
</aop:aspect>
</aop:config>

6、  main方法

package com.spring.aop3;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Main {
public static void main(String[] args) {
ApplicationContext ac=new ClassPathXmlApplicationContext("SpringAop3.xml");
ITest action= (ITest) ac.getBean("test");
System.out.println(action.myTest("aaaa", "bbbb"));
}
}

7、  执行结果


猜你喜欢

转载自blog.csdn.net/wllno001/article/details/80667423