Spring AOP 失效,大部分人都会犯。

一、切面类上没有添加Component注解

@Component
@Aspect
public class AopTest {

如上代码,因为Spring AOP是交由Spring 容器去管理,所以没有加上Component之后,容器就无法帮我们自动代理。

总结,一切交由Spring容器管理的都需要显示声明Component或则别的注解。当我们,无法确定该注解是否包含Component时,可以使用按住alt+鼠标点击注解  就能访问该注解的组成。

如下图,点击@Aspect,里面并没有声明Component

@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE})
public @interface Aspect {
    String value() default "";
}

如下图,当我们打开@Configuration时,就包括了Component

@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Component
public @interface Configuration {
    @AliasFor(
        annotation = Component.class
    )
    String value() default "";

    boolean proxyBeanMethods() default true;
}

二、没有给切面中的方法没有加上参数

如下代码,如果我们代理的那个方法有参数时,我们也必须加上参数,否则会代理不成功。

 @Pointcut("execution(void a.b.websocket.WebApplication.save(*))")
    private void pt1(){}

如下图,就是没有加上参数的代理

 @Pointcut("execution(void a.b.websocket.WebApplication.save())")
    private void pt1(){}

三、Spring Test中,并不会让AOP 失效

如果你怀疑时Spring Test导致AOP失效,那你就错了,换一个方向找错误说不定更好。希望以上想法对你们有帮助。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值