在我的应用程序中,我使用的是基于注释的弹簧配置。
我正在使用@ComponentScan
(并且它工作正常)。现在我正在尝试使用@EnableTransactionManagement
添加简单的事务管理。
但是,当我添加它时,我开始收到其中一个未找到的bean的错误(即因BeanCreationException
而得到NoSuchBeanDefinitionException
)。没有其他错误(即没有任何与事务管理相关的内容)。
当我评论@EnableTransactionManagement
时,一切正常。我想用DataSourceTransactionManager
可能是什么原因?
答案 0 :(得分:3)
其中一个原因可能是你的bean实现了一个接口。
当bean实现接口变为@Transactional
时,应该创建一个代理,默认情况下它将是你的类实现的接口的JDK代理。
因此,由于代理,bean现在仅作为接口(代理)而不是具体类。
你应该重构你的类 - 引入另一个带有服务方法的接口,并将其作为接口而不是类引用。