AOP通知无法切入指定方法
2024-09-27 20:25:05
AOP通知,切入指定方法时拦截不到,可能是拦截的方法本身是被本类的其他方法调用的,根据AOP反射原理是无法拦截本类中方法调用的方法的。如:
class AImpl implements AIf { sleep(){ say(); } say(){ System.out.println("我是被本类的其它方法调用的"); } }
AImpl类中sleep()方法中调用了本类中的say()方法,如果用aop切入点去拦截sleep()方法,则可以正常拦截,若拦截say()方法,则无法拦截。解决方案为使用动态代理,流程如下:
①:创建代理接口
public interface BeanSelfAware {
void setSelf();
}
②:实现代理接口,获得上下文环境的对象,把自身对象注入给本类
1 class AImpl implements AIf,BeanSelfAware {
2 @Autowired //① 注入上下文
3 private ApplicationContext context;
4
5 private AIf aIf;
6 sleep(){
7
8 aIf.say();
9
10 }
11
12 say(){
13
14 System.out.println("我是被本类的其它方法调用的");
15
16 }
17 //获得自身对象
18 @PostConstruct
19 public void setSelf() {
20 this.aIf= context.getBean(AIf.class);
21 }
22
23 }
这样 aop就可正常拦截say()方法了
最新文章
- Duilib改进窗口拖动,使整个窗口都能拖动两种方法(转载)
- 数据库开发基础-SQl Server 视图
- 谈谈JavaScript MVC模式
- js广告弹窗
- 转:TimeSpan的用法
- Ado.Net要知道的东西
- HDU5597/BestCoder Round #66 (div.2) GTW likes function 打表欧拉函数
- Android基础_2 Activity线性布局和表格布局
- delphi获取mdb密码
- device tree website
- Google Maps Android API v2 (3)- 地图添加到Android应用程序
- Laravel 用户验证Auth::attempt fail的问题
- Hadoop新生报到(一) hadoop2.6.0伪分布式配置详解
- MySQL事务以及隔离级别
- Netty学习笔记(四) 简单的聊天室功能之服务端开发
- “ORA-12154: TNS: 无法解析指定的连接标识符”错误解决办法
- selenium中的对文本进行全选,复制,粘贴,剪切和删除的操作
- 转载:如何在Ubuntu 18.04上使用UFW设置防火墙
- .Net Core项目添加日志功能
- 学会4种备份MySQL数据库(基本备份方面没问题了)
热门文章
- android.view.animation(2) - 插值器Interpolator
- linux如何查看CPU,内存,机器型号,网卡信息
- python学习笔记(10)--爬虫下载煎蛋图片
- Keil的使用方法(汇总)
- Cocos2d-x 3.0final 终结者系列教程07-画图节点Node
- Istio流量管理实现机制深度解析
- 用户控件(ASCX)向网页(ASPX)传值使用反射实现
- Linux下Apache与httpd的区别与关系
- React Native开发技术
- 使用webdriverwait封装查找元素方法