事务在没有 @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;
}
数据源属性有:url
、driverClassName
、jndiName
等
我正在使用 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;
}
数据源属性有:url
、driverClassName
、jndiName
等