Java AOP 动态代理 配置表达式
来源:互联网 发布:软件的可维护性 编辑:程序博客网 时间:2024/06/07 14:27
AOP的源码中用到了两种动态代理来实现拦截切入功能:jdk动态代理和cglib动态代理。两种方法同时存在,各有优劣。jdk动态代理是由java内部的反射机制来实现的,cglib动态代理底层则是借助asm来实现的。总的来说,反射机制在生成类的过程中比较高效,而asm在生成类之后的相关执行过程中比较高效(可以通过将asm生成的类进行缓存,这样解决asm生成类过程低效问题)。还有一点必须注意:jdk动态代理的应用前提,必须是目标类基于统一的接口。如果没有上述前提,jdk动态代理不能应用。由此可以看出,jdk动态代理有一定的局限性,cglib这种第三方类库实现的动态代理应用更加广泛,且在效率上更有优势。JDK的动态代理是基于接口的。<tx:annotation-driven transaction-manager="transactionManager" proxy-target-class="true"/>
注意:proxy-target-class属性值决定是基于接口的还是基于类的代理被创建。如果proxy-target-class 属性值被设置为true,那么基于类的代理将起作用(这时需要cglib库)。如果proxy-target-class属值被设置为false或者这个属性被省略,那么标准的JDK 基于接口的代理将起作用。
即使你未声明 proxy-target-class="true" ,但运行类没有继承接口,spring也会自动使用CGLIB代理。
高版本spring自动根据运行类选择 JDK 或 CGLIB 代理
阅读全文
0 0
- Java AOP 动态代理 配置表达式
- Spring AOP配置 动态代理
- 动态代理AOP的配置
- Java动态代理实现AOP
- java动态代理实现aop
- java动态代理实现AOP
- java的动态代理(AOP)
- java动态代理实现AOP
- JAVA AOP之动态代理
- Java动态代理-->Spring AOP
- java动态代理与AOP
- spring aop,java动态代理
- Java静态代理、动态代理以及AOP
- 【Java进阶-Java动态代理与AOP】
- Aop 代理 动态代理
- 用Java动态代理实现AOP
- 使用Java动态代理实现AOP
- 用Java动态代理实现AOP
- 文章标题
- 异常处理
- Tesseract:安装与命令行使用
- 一加5简单体验Google ARCore
- nginx配置总结
- Java AOP 动态代理 配置表达式
- postman使用教程
- unity对象池
- Ubuntu12.04 搭建smb共享目录(包含权限管理)
- mysql 时间段查询,无数据时补0
- 不能使用箭头函数的场景
- dsfsd
- EditText之密码显示明文的输入框
- 10月9日云栖精选夜读:上千家企业将空降云栖小镇_一起见证普惠科技的魅力