spring aop学习8:spring对jdk和cglib动态代理的选择
来源:互联网 发布:手机dns优选软件 编辑:程序博客网 时间:2024/06/07 00:50
一.spring对jdk和cglib动态代理的选择
1.查看spring源码:
org.springframework.aop.framework.DefaultAopProxyFactory.java
的
createAopProxy(){}
方法:
@Override public AopProxy createAopProxy(AdvisedSupport config) throws AopConfigException { //◆如果目标对象实现了接口,且强制cglib代理,则使用cglib代理 if (config.isOptimize() || config.isProxyTargetClass() || hasNoUserSuppliedProxyInterfaces(config)) { Class<?> targetClass = config.getTargetClass(); if (targetClass == null) { throw new AopConfigException("TargetSource cannot determine target class: " + "Either an interface or a target is required for proxy creation."); } //◆如果目标对象实现了接口,则采用JDK动态代理 if (targetClass.isInterface()) { return new JdkDynamicAopProxy(config); } //◆如果目标对象没有实现接口,则采用Cglib动态代理 return new ObjenesisCglibAopProxy(config); } else { return new JdkDynamicAopProxy(config); } }
2.得出结论:
◆如果目标对象实现了接口,则采用JDK动态代理
◆如果目标对象没有实现接口,则采用Cglib动态代理
◆如果目标对象实现了接口,且强制cglib代理,则使用cglib代理
阅读全文
0 0
- spring aop学习8:spring对jdk和cglib动态代理的选择
- spring对AOP的支持(JDK的动态代理实现AOP和CGLIB实现AOP)
- 基于Spring AOP的JDK动态代理和CGLIB代理
- spring对AOP的支持 JDK动态代理和CGLIB的区别
- Spring AOP 代理实现的两种方式: JDK动态代理 和 Cglib框架动态代理
- Spring-AOP: JDK代理和CGLIB代理
- Spring-AOP: JDK代理和CGLIB代理
- 简单模拟Spring AOP功能 (2) JDK动态代理技术和CGLib的动态代理
- CGLIB动态代理和JDK动态代理-Spring AOP的底层实现原理
- 浅析Spring AOP源码(十三) jdk的动态代理和cglib的代理
- spring jdk动态代理、Cglib动态代理和LoadTimeWeaver(LTW)的应用选择
- spring(AOP)静态代理、JDK动态代理、cglib实现代理
- Spring AOP详解 、 JDK动态代理、CGLib动态代理
- Spring AOP详解 、 JDK动态代理、CGLib动态代理
- Spring AOP详解 、 JDK动态代理、CGLib动态代理
- Spring中AOP实现的两种方式之JDK和cglib的动态代理
- Spring中AOP实现的两种方式之JDK和cglib的动态代理
- Spring(十)通过动态代理(JDK的Proxy)和cglib实现AOP技术
- java IO 字符流之 Buffered缓冲区
- Eclipse集成Maven和Scala
- 童年经典小游戏,俄罗斯方块,让我们一起用javascript来制作自己的童年吧
- 词法分析
- bzoj2744 二分图 最大团
- spring aop学习8:spring对jdk和cglib动态代理的选择
- 高进度算法-补码运算
- [noip2014]子矩阵(dfs+dp)
- Java之进程与线程
- poj 3177 Redundant Paths
- 一些比较常用的在Markdown使用的数学符号
- [数据结构]实验五_顺序二叉树
- 10.23日常总结
- MySQL初步学习1:配置MySQL