理解Spring Boot的事务管理
1.1 实验内容
事务管理是Spring框架中最为常用的功能之一,请查阅资料完成下面任一问题:
1. 如何为多个数据源指定不同的事务管理器?请给出应用例子和测试代码。
2. 隔离级别是指若干个并发的事务之间的隔离程度,与开发时相关的场景主要包括:脏读取、重复读、幻读,如何理解这些概念?在Spring Boot中如何实现?请给出应用例子和测试代码。
3. 事务的传播行为是指:如果在开始当前事务之前,一个事务已经在上下文中存在,此时有若干个选项(REQUIRED、SUPPORTS、MANDATORY、REQUIRES_NEW)可以指定一个事务性方法的执行行为,如何理解这些选项?请给出应用例子和测试代码。
1.2 实验过程描述
为多个数据源指定不同的事务管理器
1. 创建一个Spring配置类
定义两个DataSource用来读取application.properties中的不同配置。如下例子中,主数据源配置为spring.datasource.primary开头的配置,第二数据源配置为spring.datasource.secondary开头的配置。
@Configuration public class DataSourceConfig {
@Bean(name = "primaryDataSource") @Qualifier("primaryDataSource") @ConfigurationProperties(prefix="spring.datasource.primary") public DataSource primaryDataSource() { return DataSourceBuilder.create().build(); } @Bean(name = "secondaryDataSource") @Qualifier("secondaryDataSource") @Primary @ConfigurationProperties(prefix="spring.datasource.secondary") public DataSource secondaryDataSource() { return DataSourceBuilder.create().build(); } }
对应的application.properties配置如下:
spring.datasource.primary.url=jdbc:mysql://localhost:3306/test1 spring.datasource.primary.username=root spring.datasource.primary.password=password spring.datasource.primary.driver-class-name=com.mysql.jdbc.Driver spring.datasource.secondary.url=