【发布时间】:2011-12-24 09:52:21
【问题描述】:
我使用@Configuration 注释来配置spring 而不是xml 文件。我正在使用不同的会话工厂和不同的事务管理器配置 2 个数据源。我在这里遇到了@EnableTransactionManagement 注释的问题。我在其文档中读到,
@EnableTransactionManagement更灵活;它会回落到一个 按类型查找任何PlatformTransactionManagerbean 中的 容器。因此名称可以是“txManager”、“transactionManager”或 “tm”:根本没关系。
这意味着无论我给方法起什么名字,当我有 2 个事务管理器时,它总是会搜索返回 PlatformTransactionManager 对象的方法。现在的问题是,当我测试这个类时,它给了我错误:
org.springframework.beans.factory.NoSuchBeanDefinitionException:没有定义类型为 [org.springframework.transaction.PlatformTransactionManager] 的唯一 bean:预期单个 bean,但找到了 2
我什至尝试拥有 2 个不同的配置类,但徒劳无功。在 xml 配置中,情况并非如此。我用两个<tx:annotation-driven transaction-manager="" /> 标签注册了我的两个事务管理器,它运行良好。但不能在这里对注释做同样的事情。
如果我想在Spring注解的配置类中用2个不同的事务管理器来配置2个数据源怎么办?
【问题讨论】:
-
这可能是一个错误,因为 Spring 3.1 仍处于 beta/rc 阶段。
标签: java spring spring-3 spring-annotations