事务在没有 @EnableTransactionManagement 的情况下工作

transaction working without @EnableTransactionManagement

我正在使用 spring boot with mybatis。如果我使用像

这样的注释,我不会使用 spring 数据或其他任何东西
@Transactional(readOnly = true, propagation = Propagation.REQUIRED, rollbackFor= {Exception.class})

它正在处理 transaction.I 尚未在任何地方指定启用事务管理。 spring 引导如何启用此功能。这怎么可能?

默认情况下Spring如果数据库源属性确实存在,引导会启动事务自动配置。 请参阅 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