@EnableTransactionManagement、@ComponentScan和DataSourceTransactionManager问题

4
在我的应用程序中,我使用基于注解的Spring配置。我之前使用了@ComponentScan(它可以正常工作)。现在我想通过@EnableTransactionManagement添加简单的事务管理。但是,当我添加它时,我开始收到一个bean未找到的错误(即我会因为NoSuchBeanDefinitionException而获得BeanCreationException)。没有其他错误(即与事务管理无关的内容)。当我将@EnableTransactionManagement注释掉时,一切正常。我正在尝试将其与DataSourceTransactionManager一起使用。可能的原因是什么?
1个回答

3
可能的原因之一是您的bean实现了一个接口。
当实现接口的bean变成@Transactional时,应该创建代理,通常情况下,它将是您的类实现的接口的JDK代理。
因此,由于代理,现在只能通过接口(代理)访问bean,而不能通过具体类访问。
您应该考虑重构您的类 - 引入另一个带有服务方法的接口,并将其作为接口而不是类来引用。
请参见https://dev59.com/PGsy5IYBdhLWcg3w8CbJ#8224772

请注意,我并不建议使用proxy-target-class="true",而只是重构导致问题的bean。 - Boris Treukhov

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接