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

标签 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>

最佳答案

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

更多信息可以找到here

关于java - 如何在基于类的注释中声明 Spring 中的 Transaction bean?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54546798/

相关文章:

java - adb 找不到我的设备进行 Android 调试。为什么?

java - 创建基于 UTC 而不是本地时间的 JSR 310 时钟?

java - Hibernate 正则表达式验证字段不起作用

java - 我们可以使用 Web 套接字在微服务之间进行通信吗?

java - 基于函数输入的线程 block

java - StringBuffer new() 和 delete(0, sb.length()) 哪个更高效?

Spring框架。如何存储一些数据以防止每次访问数据库

spring - 如何对整个集合的数组大小求和?

java.lang.NoClassDefFoundError : org/apache/commons/fileupload/FileItemFactory

java - 添加拦截器时出现异常