Spring @启用TransactionManagement、@ComponentScan和DataSourceTransactionManager问题

Spring @启用TransactionManagement、@ComponentScan和DataSourceTransactionManager问题,spring,spring-transactions,Spring,Spring Transactions,在我的应用程序中,我使用基于注释的spring配置 我使用的是@ComponentScan(效果很好)。现在,我尝试使用@EnableTransactionManagement添加简单的事务管理 但是,当我添加它时,我开始得到一个找不到的bean的错误(即,我得到BeanCreationException,因为NoSuchBeanDefinitionException)。没有其他错误(即与交易管理无关) 当我将@EnableTransactionManagement注释掉时,一切正常。我正在尝试

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

我使用的是
@ComponentScan
(效果很好)。现在,我尝试使用
@EnableTransactionManagement
添加简单的事务管理

但是,当我添加它时,我开始得到一个找不到的bean的错误(即,我得到
BeanCreationException
,因为
NoSuchBeanDefinitionException
)。没有其他错误(即与交易管理无关)

当我将
@EnableTransactionManagement
注释掉时,一切正常。我正在尝试将其用于
数据源TransactionManager


原因可能是什么?

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

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

因此,由于有了代理,bean现在只能作为接口(代理)使用,而不能作为具体类使用

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


请参见

p.S.我不是建议使用
proxy target class=“true”
,而是只重构导致问题的bean。