我在Config.java类中将Transaction的bean声明为:
@Bean
public PlatformTransactionManager txManager() {
return new DataSourceTransactionManager(dataSource());
}
@Bean
public DriverManagerDataSource dataSource() {
DriverManagerDataSource dataSource = new
DriverManagerDataSource();
dataSource.setDriverClassName("oracle.jdbc.driver.OracleDriver");
dataSource.setUrl("jdbc:oracle:thin:@192.168.1.5:1521:DCGCDB");
dataSource.setUsername("OWNER");
dataSource.setPassword("OWNER");
return dataSource;
}
但是对于基于xml的我已经看到:
<context:annotation-config/>
<tx:annotation-driven transaction-manager="transactionManager"/>
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"></property>
</bean>
这两者是相同的还是基于类的注释中缺少某些内容?
在我用于交易的pom.xml中,我声明:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>4.3.7.RELEASE</version>
</dependency>
答案 0 :(得分:1)
您有注释配置和xml配置吗?我建议不要这样做,选择两者之一。为此,您要配置两个事务管理器(transactionManager和txManager)。删除txManager的声明,因为您要使用的声明是transactionManager(这是将为@Transactional注释方法提供支持的声明)
可以找到更多信息here