spring transaction 注解方法报错Can not set field to proxy

应用Spring典型场景:接口+实现,初始化时自动注入。

应用transaction注解方法的典型场景:接口+实现,在实现整个类上加注解或一个特定方法上加注解。

运行时出现这样的错误:

Caused by: java.lang.IllegalArgumentException: Can not set xxxxxx field yyyyyy to com.sun.proxy.$ProxyNNNNNN

出现错误原因:

代码中出现了对实现的初始化,而配置文件中没有将AOP由默认的针对接口设置成针对类的。因此有两种解决方法:

一、配置文件中将

<tx:annotation-driven transaction-manager="transactionManager"/>

改成

<tx:annotation-driven transaction-manager="transactionManager" target-class-proxy="true"/>

这样就把默认为针对接口的AOP就变成了针对类的。

二、修改初始化的方法

自动注入我目前接触了三种方法初始化:

@Autowired

Interface interface;

@Autowired

Implementation implementaion;

@Autowired

@Qualifier("implementation") 

Interface implementaion;

这三种方法在大多数时候不会引起麻烦。但是应用场景略有不同。如果接口+实例的模型中,实例不止一个,只能用后面两种;但是后面两种的第二种是针对接口的,第一种是针对类的。所以用第一(一个实例)和第三种方法初始化。

上面两种解决方案我倾向于第二种,因为有时候我们需要加入断点以调试。第一种方法在transaction里加入断点会出现cannot set breakpoint类似的错误。

(我是JAVA小学生,不当请指正)

时间: 2024-08-03 23:07:42

spring transaction 注解方法报错Can not set field to proxy的相关文章

ios-在继承类中调用方法报错

问题描述 在继承类中调用方法报错 有两个类A和B.在A类中: @interface A : B 在B类中,得到如下代码: self.navigationItem.rightBarButtonItem = [UIBarButtonItem barItemWithImage:[UIImage imageNamed:@""Add-button-normal""] highlightedImage:[UIImage imageNamed:@""Add-b

ssh整合-常见的SSH执行save方法报错,

问题描述 常见的SSH执行save方法报错, 报错:Caused by: org.springframework.beans.NotWritablePropertyException: Invalid property 'driverClassName' of bean class [com.mchange.v2.c3p0.ComboPooledDataSource]: Bean property 'driverClassName' is not writable or has an inval

android中关于ProgressDialog中setProgressStyle方法报错问题

问题描述 android中关于ProgressDialog中setProgressStyle方法报错问题 我在设置进度条的时候使用setProgressStyle方法,但是报错,说是并没有这个方法,打开ProgressDialog源码也没有发现这个方法,该怎么做 解决方案 关于ResultSet.last()方法报错问题的解决Android ProgressDialog 处理方法: 解决方案二: 是不是源码没关联全?按理应该有此方法的阿

数据库反向生成的项目调用findByProerty方法报错

问题描述 利用数据库反向生成的项目,调用findByProerty(StringpropertyName,....)方法报错,搞了一个下午了,实在不知道怎么解决了,错误代码如下:Exceptioninthread"main"javax.ejb.EJBException:EJBException:;nestedexceptionis:<openjpa-1.1.1-SNAPSHOT-r422266:891341nonfatalusererror>org.apache.openj

stringbuilder-Java Stringbuilder调用append()方法报错

问题描述 Java Stringbuilder调用append()方法报错 报错: The type java.lang.CharSequence cannot be resolved. It is indirectly referenced from required .class 知道了 顺便说一句 回答问题就好好回答 不愿回答就不用回答 即使别人问的问题在弱智或者啥的 也不用嘲笑别人吧....... 解决方案 先贴代码,在贴错误,肯定是代码语法有问题并且是简单问题,这个错是编译器提示的.看

引入第三方jar,执行封装的方法报错,大神求助

问题描述 引入第三方jar,执行封装的方法报错,大神求助 2016-05-23 14:58:54.053::WARN: Nested in org.springframework.web.util.NestedServletException: Handler processing failed; nested exception is java.lang.AbstractMethodError: javax.ws.rs.core.UriBuilder.uri(Ljava/lang/String

on estroy-Android上onDestroy方法报错

问题描述 Android上onDestroy方法报错 @Override protected void onDestroy() { System.out.println(""onDestroy AppActivity""); Intent intent = new Intent(AppActivity.this Alarmreceiver.class); intent.setAction(""arui.alarm.action"&quo

java中为什么在main方法里面写sleep方法报错

问题描述 java中为什么在main方法里面写sleep方法报错 java中为什么在main方法里面写sleep方法报错,能看到图片吗,图片里有详细代码 解决方案 import java.lang.Thread;有没有加上 解决方案二: 开发建议采用Eclipse开发工具,这样导包和异常处理就很方便了. 解决方案三: 开发建议采用Eclipse开发工具,这样导包和异常处理就很方便了. 解决方案四: java中main()方法是哪个类里面的方法?JAVA中sleep().wait().yield(

java ee-eclipse执行main方法报错

问题描述 eclipse执行main方法报错 Eclipse版本:Eclipse Java EE IDE for Web Developers. Version: Luna Service Release 2 (4.4.2) 系统版本:OS X Yosemite 10.10.5 (14F27) 当我执行Main方法的时候就报错说大概是jdk找不到还是什么,但是我检查擦eclipse的jdk配置是正确的,如图(图片现在上传不上来,我等会试试) 我又自己写了个Java程序,用终端执行,就可以,不知道