关于AOP无法切入同类调用方法的问题
来源:互联网 发布:常用医学软件 编辑:程序博客网 时间:2024/05/16 14:13
转载自:http://blog.csdn.net/z69183787/article/details/45622821
最近在开发中遇到一个问题,当在Service中定义了一个方法并且切入之后,从Controller里面调用该方法可以实现切入,但是当在同一个Service中实现另一方法并调用改方法时却无法切入。代码类似于:
总之这样的调用根本不会进去切面,找了很久资料都不知道怎么回事,果然我还是太弱了。后来有幸得问高人,指点说Service中如此调用并非调用的是代理类中的方法,是不会被切进去的。换言之,必须要调用代理类才会被切进去。 那么应该怎么破呢?既然只有调用代理类的方法才能切入,那我们拿到代理类不就好了嘛。尝试性的在IDE里面搜Aop相关的类,一眼就看到一个叫AopContext的东西,看来游戏啊,里面有一个方法叫做currentProxy(),返回一个Object。怎么样都要试一下,果断的把这个object打印出来。报错了……等等,这个错有点眼熟,之前傻傻找不到问题的时候看过Spring的配置。把expose-proxy设成true,再跑一次,终于没有报错了,而且打印出了令人欣喜的结果,currentProxy()的结果就是当前Service的代理类,那么事情简单了。修改Service的callMethodA()方法如下:成功了,方法成功的切入进去了,等下只要再把获取代理类的方法独立处理就好了。等等,突然脑洞大开,既然这样可以,那是不是直接applicationContext.getBean()也可以呢?实验过后得到的结果是可行,而且配置中的expose-proxy也不用设置成true。 总算这个问题算是解决了,但是以后在方法调用的时候就需要谨慎了,感觉应该有更好的办法解决这个问题,不知道哪位有更好的办法,能不能告诉我一下下呢?阅读全文
0 0
- 关于AOP无法切入同类调用方法的问题
- 关于AOP无法切入同类调用方法的问题
- 关于AOP无法切入同类调用方法的问题
- 关于AOP无法切入同类调用方法的问题
- 关于AOP无法切入同类调用方法的问题
- 关于AOP无法切入同类调用方法的问题
- AOP无法切入同类调用方法的解决办法
- AOP切入同类调用方法-AopContext.currentProxy()
- AOP 同类方法调用无法进入切面
- Spring AOP无法拦截对象的内部方法调用问题
- SpringMVC在Controller层实现aop,同类中方法调用问题
- SpringMVC在Controller层实现aop,同类中方法调用问题
- 关于不同类之间句柄调用问题
- 解决Spring中AOP不能切入Struts的DispatchAction方法的问题
- Spring中APO切入同类下的其他方法实现事务控制
- service层AOP(基于注解的方法切入)
- 关于不同类对象的覆盖问题
- Spring aop切入方法都用不到
- Vector用法
- python time模块
- 大型网站是怎样解决多用户高并发访问的
- 构建乘积数组
- 递归法(Recursion)
- 关于AOP无法切入同类调用方法的问题
- Hive常用运算(关系运算)、逻辑运算与数学运算、数值运算、日期函数、条件函数、字符串函数
- struts中action的创建和属性注入
- canvas
- 《五》uploadify插件上传文件
- 掌握 NumPy 常用函数
- Hdu2014 青年歌手大奖赛_评委会打分
- 设计模式之结构型模式
- HTML5 CSS+DIV定位分析(relative,absolute,static,fixed)