尝试使用Spring的事务中时,我得到以下错误:Spring使用“transactionManager的”,虽然另一个指定
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!
虽然我已经指定了另一个名字。下面是代码片段:
@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?
谢谢。
是的。这是修复。谢谢。 – csm86