【问题标题】:@EnableTransactionManagement,@ComponentScan and DataSourceTransactionManager problems@EnableTransactionManagement、@ComponentScan 和 DataSourceTransactionManager 问题
【发布时间】:2013-09-18 14:26:11
【问题描述】:

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

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

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

当我评论 @EnableTransactionManagement 时,一切正常。我正在尝试将其与 DataSourceTransactionManager

一起使用

可能是什么原因?

【问题讨论】:

    标签: spring spring-transactions


    【解决方案1】:

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

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

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

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

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

    【讨论】:

    • P.S.请不要说我不建议使用proxy-target-class="true",而只是重构导致问题的bean。
    猜你喜欢
    • 2014-07-05
    • 1970-01-01
    • 1970-01-01
    • 2017-04-05
    • 1970-01-01
    • 1970-01-01
    • 2016-12-18
    • 1970-01-01
    • 2017-04-25
    相关资源
    最近更新 更多