JavaEE杂项- spring AOP的几种实现方式(表面)
1. 传统的代理模式。
-
123456789101112131415
package
springAOP;
publicclassSubjectProxyimplementsIsubJect{
privateISubject subject;
publicStringRequest(){
//add pre-process logicif neccesary
subject.request();
//add post process if neccesary
}
publicISubject getSubject(){
return
subject;
}
publicvoid setSubject(ISubject subject){
this
.subject=subject;
}
}
这种方法缺点是要为每一个被带离对象创建单独的代理类。 在需要代理的功能很多时是一个灾难。
2. 通过java反射机制的动态代理
主要是由java.lang.reflect.Proxy和java.lang.reflect.InvocationHandler接口实现。 具体可以参考其他例子。
该接口必须实现的invoke函数就可以看成是AOP种的Advice
3.通过CGLIB动态生成字节码。 即利用CGLIB生成要被代理的类的子类然后覆写相应方法并插入处理逻辑
I see I come I conquer.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步