proxy-target-class之坑
来源:互联网 发布:支付宝源码 编辑:程序博客网 时间:2024/06/10 06:27
SSM框架配置实物时,会开始事务注解,如下所示:
<!-- 决定事务注解是否生效,去掉后@Transactional 注解不报错但不生效 -->
<tx:annotation-driven transaction-manager="transactionManager" order="200" proxy-target-class="true"/>
proxy-target-class属性值默认是false,该属性值决定是基于接口类还是基于实现类的代理被创建。
如果proxy-target-class 属性值被设置为true,那么基于实现类的代理将起作用(这时需要cglib库)。
如果proxy-target-class属值被设置为false或者这个属性被省略,那么标准的JDK 基于接口的代理将起作用。即使你未声明 proxy-target-class="true" ,但运行类没有继承接
口,spring也会自动使用CGLIB代理(高版本spring自动根据运行类选择 JDK 或 CGLIB 代理)
默认情况下,我们会在接口实现类加上@service注解以及进行事务注解的声明(全局声明或方法上声明都可),这种做法提供接口类服务供rpc调用是没问题的,客户端只需引入相应的jar包,spring中配置bean,使用时@Resource或@Autowired注解注入都可以。
如果是接口类的方法上使用@Transaction注解,那么spring配置bean之后,注入的时候导致程序编译不通过,部分报错信息如下:
Caused by: java.lang.IllegalArgumentException: Cannot subclass final class class com.sun.proxy.$Proxy110at org.springframework.cglib.proxy.Enhancer.generateClass(Enhancer.java:446)at org.springframework.cglib.transform.TransformingClassGenerator.generateClass(TransformingClassGenerator.java:33)at org.springframework.cglib.core.DefaultGeneratorStrategy.generate(DefaultGeneratorStrategy.java:25)at org.springframework.cglib.core.AbstractClassGenerator.create(AbstractClassGenerator.java:216)at org.springframework.cglib.proxy.Enhancer.createHelper(Enhancer.java:377)at org.springframework.cglib.proxy.Enhancer.create(Enhancer.java:285)at org.springframework.aop.framework.CglibAopProxy.getProxy(CglibAopProxy.java:205)解决办法:接口类去掉注解或者proxy-target-class设置false
阅读全文
0 0
- proxy-target-class之坑
- proxy-target-class 作用
- spring proxy-target-class
- Spring3核心技术之AOP config配置 proxy-target-class
- spring的proxy-target-class详解
- AAA Spring3核心技术之AOP config配置 proxy-target-class
- proxy-target-class="true" 与proxy-target-class="false"的区别
- proxy-target-class="true" 与proxy-target-class="false"的区别
- proxy-target-class="true" 与proxy-target-class="false"的区别
- proxy-target-class="true" 与proxy-target-class="false"的区别
- proxy-target-class="true" 与proxy-target-class="false"的区别
- proxy-target-class="true" 与proxy-target-class="false"的区别
- proxy-target-class="true" 与proxy-target-class="false"的区别
- 【spring】proxy-target-class="true" 与proxy-target-class="false"的区别
- proxy-target-class="true" 与proxy-target-class="false"的区别
- proxy-target-class="true" 与proxy-target-class="false"的区别
- proxy-target-class="true" 与proxy-target-class="false"的区别
- proxy-target-class="true" 与proxy-target-class="false"的区别
- zoj3960
- BP神经网络入门级简介
- CentOS7使用firewalld打开关闭防火墙与端口
- Android软件开发之PreferenceActivity中的组件
- 关于Python2.7得到结果乱码的问题解决办法
- proxy-target-class之坑
- POJ 3683 2-SAT 输出可行方案
- 求一个只包含0、1的矩阵中只包含1的最大子矩阵大小
- HDU1241:Oil Deposits(DFS)
- 微信自动关闭内置浏览器页面
- 移除DOM节点中的所有属性的正则表达式
- python——反转字典的两种方法(字典的key和value对换)
- 关于vertical-align的一点心得
- 优势+工具+实践=DevOps&Docker的企业级落地