spring系列(三)——springAOP原理探究(CGLIB代理机制)
来源:互联网 发布:java cova spank bang 编辑:程序博客网 时间:2024/06/07 10:39
public class PersonProxyFactory {public static Person getAuthInstance() {Enhancer en = new Enhancer();//设置要代理的目标类en.setSuperclass(Person.class);en.setCallback(new AroundAdvice());return (Person)en.create();}}
在默认情况下,如果Spring AOP发现目标实现了相应的Interface,则采用动态代理为其生成代理对象实例;而如果目标对象没有实现任何的Interface,Spring AOP会尝试使用CGLIB动态字节码生成类库,为目标对象生成代理对象实例。这里通过DEMO来演示CGLIB的实现原理。
下面是使用CGLIB做一个 around的例子。
目标Person类。
public class Person {public String sayHello(String name) {System.out.println("你好," + name);return "你好," + name;}}
拦截类AroundAdvice,实现aop的around
public class AroundAdvice implements MethodInterceptor {@Overridepublic Object intercept(Object arg0, Method method, Object[] args, MethodProxy proxy) throws Throwable {System.out.println("执行目标方法之前,模拟开始事务 ..."); Object rvt = proxy.invokeSuper(arg0, args);System.out.println("执行目标方法之后,模拟结束事务 ..."); return rvt + " 新增的内容"; }}
代理工厂PersonProxyFactory类
public class PersonProxyFactory {public static Person getAuthInstance() {Enhancer en = new Enhancer();//设置要代理的目标类en.setSuperclass(Person.class);en.setCallback(new AroundAdvice());return (Person)en.create();}}
测试类
public class PorxyTest {public static void main(String[] args) {Person person = PersonProxyFactory.getAuthInstance();person.sayHello("张三");}}
运行结果
阅读全文
0 0
- spring系列(三)——springAOP原理探究(CGLIB代理机制)
- Spring—AOP两种代理机制对比(JDK和CGLib动态代理)
- SpringAop实现原理 --- 动态代理、cglib
- 自己实现Spring AOP(三)CGLib代理实现AOP
- spring的AOP(三)----Cglib动态代理
- springAOP之动态代理(三)
- SpringAOP的CGLIB动态代理的底层原理实现
- 代理模式三(cglib动态代理)
- java代理(三)--cglib动态代理
- HOMEJAVAJDK动态代理代理与Cglib代理原理探究
- JDK动态代理代理与Cglib代理原理探究
- SpringAOP基本概念及实现原理(三)
- SpringAOP CGLIB动态代理 理解
- Spring学习总结(二)——静态代理、JDK与CGLIB动态代理、AOP+IoC
- Spring学习总结(二)——静态代理、JDK与CGLIB动态代理、AOP+IoC
- spring框架学习(八)—静态代理、JDK与CGLIB动态代理、AOP+IoC
- Java动态代理机制——Cglib
- spring中CGLIB代理(CGLIB字节码)
- angular的post请求,SpringMVC后台接收不到参数值的解决办法(参考加自创)
- QChart应用
- Android开发之~java.lang.ClassNotFoundException: Didn't find class "android.view.x" on path: ...
- dijkstra算法代码实现
- Java —— static 关键字、static 内部类、枚举类
- spring系列(三)——springAOP原理探究(CGLIB代理机制)
- 锁
- 《Windows核心编程》读书笔记零 构建环境
- Elasticsearch集群Linux搭建
- 预处理入库的方式
- python zip和tar两种格式的压缩与解压
- Parse 和 TryParse
- select a method for export 各项的意思
- Android颜色选择器