4

在我的应用程序中,我使用基于注释的弹簧配置。

我正在使用@ComponentScan(并且效果很好)。现在我正在尝试使用@EnableTransactionManagement.

但是,当我添加它时,我开始收到错误,因为找不到其中一个 bean(即,我得到BeanCreationExceptionNoSuchBeanDefinitionException)。没有其他错误(即与事务管理无关)。

当我注释掉@EnableTransactionManagement时,一切正常。我正在尝试将其与DataSourceTransactionManager

可能是什么原因?

4

1 回答 1

3

原因之一可能是您的 bean 实现了一个接口。

当 bean 实现接口变为 时@Transactional,应该创建一个代理,默认情况下它将是您的类实现的接口的 JDK 代理。

因此,由于代理,bean 现在只能作为接口(代理)而不是具体类。

您可能应该重构您的类 - 使用服务方法引入另一个接口并将其引用为接口而不是类。

https://stackoverflow.com/a/8224772/241986

于 2013-09-18T14:57:25.790 回答