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

为什么切面拦截不了方法内部的方法?

比如说controller,service,serviceImpl三个类,其中service是接口

  1. 如果controller中的delete方法调用service中的delete,在serviceImpl中的delete加了注解没问题,如果serviceImpl中的delete调用了this.del()在del上面加注解就拦截不了。

  2. 我试着在service里加上del,然后在serviceImpl中delete方法中不用this调用,用applicationContext.getBean(service.class).del()这样就可以拦截

    3.我把service中的del()删掉,把serviceImpl中的delete调用del改                        成applicationContext.getBean(serviceImpl.class).del()这样又无法拦截

总结,

  1. 为什么接口实现类方法内部的方法加了注解无法拦截?@Point不是指定加了注解的方法就能拦截么?

  2. 为什么必须要把要拦截的方法放到接口里才行?属于实现类的方法不行?我在定义切点时没有指定拦截那个包下的哪个类啊?用的就是@annotation(注解名)


正在回答

1 回答

问题1: delete()方法中的this是指原始的service对象

              controller里面的注入的是代理类aopService

             只有代用aopService 才能看到代理的效果

问题2: 说明getBean出来的对象并不是aop (子类)代理的对象,题主可以换做其他AOP方式试下,看看能不能生成cglib代理子类(只是建议,本人没有尝试)

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

为什么切面拦截不了方法内部的方法?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信