亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

探秘AOP實現原理

標簽:
Java

可以这么说,AOP是基于动态代理实现的。

那么,这个过程是怎样的?

首先,我们有这样的一个Service类,它是被作为切面的一个类:

 public class Service implements User {

public void addUser(){
System.err.println("模拟增加用户");
}
}


它实现了User接口,因为我们要使用JDK动态代理来实现这个过程,所以必须要实现这样一个接口。

然后,我们生成一个代理对象:

var service=(User)Proxy.newProxyInstance(Service.class.getClassLoader(),new Class[]{User.class}, new Handler(new Service()));

这里需要实现一个handler:

public class Handler implements InvocationHandler {private User target;public Handler(User target) {this.target=target;}@Overridepublic Object invoke(Object proxy, Method method, Object[] args) throws Throwable {System.err.println("模拟日志记录");return method.invoke(target,args);}}

这个handler的作用是负责方法调用前的逻辑处理,

我们运行一下:

service.addUser();

可以看到会在addUser方法调用前执行日志记录,那么我们在Service类中增加一个方法:

public void delUser(){System.err.println("模拟删除用户");}

也可以看到日志记录是正常工作的,那么我们梳理一下AOP的实现过程:使用动态代理生成一个目标对象的代理对象,然后这个代理对象在调用目标对象之前总会执行特定的方法调用前逻辑。


點擊查看更多內容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消