2017-09-03 123 views
0

hi下面是我在spring配置类中创建的transactionManager。多事务管理器

@Bean(name = "dataSourceTXMgr") 
    public PlatformTransactionManager getTransactionManager(DataSource dataSource) { 
     return new DataSourceTransactionManager(dataSource); 
    } 



@Bean(name = "jpaTXMgr") 
public JpaTransactionManager transactionManager(LocalContainerEntityManagerFactoryBean factory) throws ClassNotFoundException 
{ 
    System.out.println("JPA"); 
    return new JpaTransactionManager(factory.getObject()); 
} 

但同时调用下面的方法我得到一个异常 org.springframework.beans.factory.NoSuchBeanDefinitionException:没有名为“transactionManager的”豆被定义

@Transactional(value = "jpaTXMgr") 
    public Staff find(String userId, String password) { 
     Staff staff = staffRepository.findOne(userId); 
     return staff; 
    } 

@EnableTransactionManagement在已经应用我弹簧配置类。请让我知道缺少什么

+0

你可以发布你的完整配置fir更好的理解。另外,如果你使用的是spring引导和spring数据,那么你不需要定义事务管理器,因为spring引导会为你做。另一个问题,为什么你需要两个tx经理? – Amardeep

+0

你很可能不应该有两个事务管理器。你当然应该阅读EnableTransactionManagement的javadoc,这正是它所期望的:https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/transaction/annotation/EnableTransactionManagement.html –

回答