Spring如何在基于类的注释中声明Transaction bean?

时间:2019-02-06 04:50:39

标签: java spring spring-mvc

我在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>

1 个答案:

答案 0 :(得分:1)

您有注释配置和xml配置吗?我建议不要这样做,选择两者之一。为此,您要配置两个事务管理器(transactionManager和txManager)。删除txManager的声明,因为您要使用的声明是transactionManager(这是将为@Transactional注释方法提供支持的声明)

可以找到更多信息here