【发布时间】:2017-01-24 12:05:54
【问题描述】:
尝试使用 Spring 事务时出现以下错误:
org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'transactionManager' is defined: No matching PlatformTransactionManager bean found for qualifier 'transactionManager' - neither qualifier match nor bean name match!
虽然我指定了另一个名字。这是代码sn-p:
@EnableTransactionManagement
public class TransactionConfig {
...
@Bean
@Qualifier(value ="jpaTransactionManager")
public PlatformTransactionManager jpaTransactionManager(EntityManagerFactory emf) {
JpaTransactionManager tm = new JpaTransactionManager();
tm.setEntityManagerFactory(emf);
tm.setDataSource(primaryDataSource());
return tm;
}
@Bean()
@Qualifier(value="jtaTransactionManager")
public JtaTransactionManager jtaTransactionManager(UserTransactionManager atomikosTransactionManager) {
......
我是这样使用它的:
@Transactional(transactionManager="jpaTransactionManager")
public class UserService {
public Iterable<FVUser> findWithQuery(Specification<FVUser> spec) {
return repository.findAll(spec);
}
存储库:
@Repository
public interface UserRepository extends PagingAndSortingRepository<FVUser, String>, JpaSpecificationExecutor<FVUser> {
调试时我注意到它正确使用“jpaTransactionManger”来调用服务方法,但似乎在寻找“transactionManager”来调用存储库方法,尽管没有为它指定事务。
有人知道为什么 Spring 在这种情况下要寻找默认的“transactionManager”bean 吗?
谢谢。
【问题讨论】:
标签: spring spring-transactions