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

简介: 应用Spring典型场景:接口+实现,初始化时自动注入。 应用transaction注解方法的典型场景:接口+实现,在实现整个类上加注解或一个特定方法上加注解。 运行时出现这样的错误: Caused by: java.lang.IllegalArgumentException: Can not set xxxxxx field yyyyyy to com.sun.pr

应用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小学生,不当请指正)

目录
相关文章
|
21小时前
|
Java Spring
【Spring】方法注解@Bean,配置类扫描路径
@Bean方法注解,如何在同一个类下面定义多个Bean对象,配置扫描路径
|
21小时前
|
存储 Java Spring
【Spring】获取Bean对象需要哪些注解
@Conntroller,@Service,@Repository,@Component,@Configuration,关于Bean对象的五个常用注解
|
21小时前
|
Java Spring
【Spring配置】idea编码格式导致注解汉字无法保存
问题一:对于同一个项目,我们在使用idea的过程中,使用汉字注解完后,再打开该项目,汉字变成乱码问题二:本来a项目中,汉字注解调试好了,没有乱码了,但是创建出来的新的项目,写的注解又成乱码了。
|
27天前
|
前端开发 Java Spring
Spring MVC核心:深入理解@RequestMapping注解
在Spring MVC框架中,`@RequestMapping`注解是实现请求映射的核心,它将HTTP请求映射到控制器的处理方法上。本文将深入探讨`@RequestMapping`注解的各个方面,包括其注解的使用方法、如何与Spring MVC的其他组件协同工作,以及在实际开发中的应用案例。
41 4
|
27天前
|
前端开发 Java 开发者
Spring MVC中的请求映射:@RequestMapping注解深度解析
在Spring MVC框架中,`@RequestMapping`注解是实现请求映射的关键,它将HTTP请求映射到相应的处理器方法上。本文将深入探讨`@RequestMapping`注解的工作原理、使用方法以及最佳实践,为开发者提供一份详尽的技术干货。
102 2
|
27天前
|
前端开发 Java Spring
探索Spring MVC:@Controller注解的全面解析
在Spring MVC框架中,`@Controller`注解是构建Web应用程序的基石之一。它不仅简化了控制器的定义,还提供了一种优雅的方式来处理HTTP请求。本文将全面解析`@Controller`注解,包括其定义、用法、以及在Spring MVC中的作用。
46 2
|
1月前
|
消息中间件 Java 数据库
解密Spring Boot:深入理解条件装配与条件注解
Spring Boot中的条件装配与条件注解提供了强大的工具,使得应用程序可以根据不同的条件动态装配Bean,从而实现灵活的配置和管理。通过合理使用这些条件注解,开发者可以根据实际需求动态调整应用的行为,提升代码的可维护性和可扩展性。希望本文能够帮助你深入理解Spring Boot中的条件装配与条件注解,在实际开发中更好地应用这些功能。
36 2
|
1月前
|
JSON Java 数据格式
springboot常用注解
@RestController :修饰类,该控制器会返回Json数据 @RequestMapping(“/path”) :修饰类,该控制器的请求路径 @Autowired : 修饰属性,按照类型进行依赖注入 @PathVariable : 修饰参数,将路径值映射到参数上 @ResponseBody :修饰方法,该方法会返回Json数据 @RequestBody(需要使用Post提交方式) :修饰参数,将Json数据封装到对应参数中 @Controller@Service@Compont: 将类注册到ioc容器
|
1月前
|
XML Java 数据格式
SpringBoot入门(8) - 开发中还有哪些常用注解
SpringBoot入门(8) - 开发中还有哪些常用注解
43 2
|
27天前
|
前端开发 Java 开发者
Spring MVC中的控制器:@Controller注解全解析
在Spring MVC框架中,`@Controller`注解是构建Web应用程序控制层的核心。它不仅简化了控制器的定义,还提供了灵活的请求映射和处理机制。本文将深入探讨`@Controller`注解的用法、特点以及在实际开发中的应用。
68 0