Spring @Aspect 全注解的AOP测试问题

感谢https://blog.csdn.net/god_is_gril/article/details/53168247?utm_source=blogxgwz3,成功解决问题

遇到问题如下:

测试切面方法,没有任何错误提示,绿色通过,但始终前置通知和后置通知的打印没起效果,idea显示方法关联到切面了,dubug却并没有走切面。

分析:

1、@Aspect注解标示的类没有起作用,,检查前置和后置括弧内的指示器(execution)语法配置,没有错误

2、试用junit测试加载xml的做法,bean和注解开启功能都是在xml中进行配置,测试通过

3、思考注解和xml配置的差异,最终发现我配置了切面,但是切面对应的pojo没有声明@Component,即切面的pojo没有让spring给创建bean,在切面Aspect 上添加@Component注解后,测试通过。

再回顾一下AOP的实质:

定义一个通用的功能,通过声明的方式定义这个功能在何处使用,而无需修改受影响的类,让代码之间更少耦合。

将切面类声明为spring的bean之后,就能通过的原因:

AspectJ切面根本不需要spring就能织入应用中, 为了使用Spring的依赖注入,对AspectJ切面注入协作者,就需要在Spring的配置中将切面声明的同时并声明为bean;

不管是注解还是xml配置,AspectJ自动代理都会为注解@Aspect的bean创建一个代理,这个代理会包含所有该切面的切点所匹配的bean,并在目标方法执行的前后调用通知方法,执行额外的逻辑;

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值