我正在使用带有mybatis的弹簧靴。如果我使用像
这样的注释,我不会使用弹簧数据或其他任何东西,而是我的服务@Transactional(readOnly = true, propagation = Propagation.REQUIRED, rollbackFor= {Exception.class})
它正在处理事务。我没有在任何地方指定启用事务管理。 spring boot如何启用它。这怎么可能?
答案 0 :(得分: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;
}
数据源属性为:url
,driverClassName
,jndiName
等。