为了账号安全,请及时绑定邮箱和手机立即绑定

Spring AOP拦截方法未生效

Spring AOP拦截方法未生效

慕的地6264312 2019-01-04 21:00:48
问题描述写了个切面,对方法上含有指定注解的方法进行拦截。运行时发现,如果一个子类A继承了抽象父类B,并实现了父类的抽象方法,在子类的重写方法上加上指定注解,却发现这个方法在调用时不能被拦截。哪位能给解释下,以及解决办法?相关代码// 注解public @interface Profiling { }// 父类public class B {    public abstract void foo(); }// 子类public class A extent B {    // 加上了Profiling注解,想要此方法被拦截,但实际未被拦截     @Profiling     @Override     public void foo() {        // do something     } }// 定义的切面public class Aspect {    @Pointcut("@annotation(com.base.Profiling)")    private void pointCut(){     }    @Around("pointCut()")    public Object around(ProceedingJoinPoint pjp) {        // do something     } }
查看完整描述

1 回答

?
倚天杖

TA贡献1828条经验 获得超3个赞

不清楚题主的配置文件是什么。题主可以这么去检查:
1、Aspect类需要被Spring管理,并且要被标记为@org.aspectj.lang.annotation.Aspect
2、A类需要被Spring管理。
3、@Around注解的处理逻辑应该是:

    @Around("pointCut()")    public void around(ProceedingJoinPoint pjp) throws Throwable {
        System.out.println("do something before the real invocation....");
        pjp.proceed();//真正的调用业务方法,就是foo();
        System.out.println("do something after the real invocation....");
    }


查看完整回答
反对 回复 2019-01-04
  • 1 回答
  • 0 关注
  • 1089 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信