【问题标题】:transaction working without @EnableTransactionManagement没有@EnableTransactionManagement 的事务工作
【发布时间】:2018-03-30 00:57:05
【问题描述】:

我正在使用带有 mybatis 的 spring boot。如果我使用像这样的注释,我没有使用弹簧数据或其他任何东西,但我的服务

@Transactional(readOnly = true, propagation = Propagation.REQUIRED, rollbackFor= {Exception.class})

它正在处理事务。我没有指定任何地方来启用事务管理。 spring boot 如何启用此功能。这怎么可能?

【问题讨论】:

    标签: spring-boot spring-transactions


    【解决方案1】:

    默认情况下,如果数据库源属性确实存在,Spring Boot 会启动事务自动配置。 请参阅DataSourceTransactionManagerAutoConfiguration 代码。

    @Configuration
    @ConditionalOnClass({ JdbcTemplate.class, PlatformTransactionManager.class })
    @AutoConfigureOrder(Ordered.LOWEST_PRECEDENCE)
    @EnableConfigurationProperties(DataSourceProperties.class)
    public class DataSourceTransactionManagerAutoConfiguration 
    
        // other code
        @Bean
        @ConditionalOnMissingBean(PlatformTransactionManager.class)
        public DataSourceTransactionManager transactionManager(
                DataSourceProperties properties) {
            DataSourceTransactionManager transactionManager = new DataSourceTransactionManager(
                    this.dataSource);
            if (this.transactionManagerCustomizers != null) {
                this.transactionManagerCustomizers.customize(transactionManager);
            }
            return transactionManager;
        }
    

    数据源属性为:urldriverClassNamejndiName 等。

    【讨论】:

      猜你喜欢
      • 2011-12-24
      • 2010-10-08
      • 1970-01-01
      • 2017-05-14
      • 2017-07-24
      • 1970-01-01
      • 1970-01-01
      • 2016-09-30
      • 2017-04-05
      相关资源
      最近更新 更多