@ EnableTransactionManagement,@ ComponentScan和DataSourceTransactionManager问题

时间:2013-09-18 14:26:11

标签: spring spring-transactions

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

我正在使用@ComponentScan(并且它工作正常)。现在我正在尝试使用@EnableTransactionManagement添加简单的事务管理。

但是,当我添加它时,我开始收到其中一个未找到的bean的错误(即因BeanCreationException而得到NoSuchBeanDefinitionException)。没有其他错误(即没有任何与事务管理相关的内容)。

当我评论@EnableTransactionManagement时,一切正常。我想用DataSourceTransactionManager

来使用它

可能是什么原因?

1 个答案:

答案 0 :(得分:3)

其中一个原因可能是你的bean实现了一个接口。

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

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

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

请参阅https://stackoverflow.com/a/8224772/241986