学习笔记: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));
}
}

 

 

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、  执行结果

 

 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值