Spring Boot + MyBatis-Plus 实现 MySQL 主从复制动态数据源切换(4)
导读:Spring,8. 创建DataSourceConfig 在 com.zbbmeta.config 包下创建 DataSourceConfig ,用于配置主从两个数据源 @Configuration@Datapublic class DataSourceConfig { @Value("${spring.datasource.master.
Spring
8. 创建DataSourceConfig
在com.zbbmeta.config包下创建DataSourceConfig,用于配置主从两个数据源
@Configuration
@Data
public class DataSourceConfig {
@Value("${spring.datasource.master.url}")
private String dbUrl;
@Value("${spring.datasource.master.username}")
private String username;
@Value("${spring.datasource.master.password}")
private String password;
@Value("${spring.datasource.master.driver-class-name}")
private String driverClassName;
@Value("${spring.datasource.slave.url}")
private String slaveDbUrl;
@Value("${spring.datasource.slave.username}")
private String slaveUsername;
@Value("${spring.datasource.slave.password}")
private String slavePassword;
@Value("${spring.datasource.slave.driver-class-name}")
private String slaveDriverClassName;
@Bean
@ConfigurationProperties(prefix = "spring.datasource.master")
public DataSource masterDataSource() {
return DataSourceBuilder.create()
.driverClassName(driverClassName)
.url(dbUrl)
.username(username)
.password(password)
.build();
}
@Bean
@ConfigurationProperties(prefix = "spring.datasource.slave")
public DataSource slaveDataSource() {
return DataSourceBuilder.create()
.driverClassName(slaveDriverClassName)
.url(slaveDbUrl)
.username(slaveUsername)
.password(slavePassword)
.build();
}
}
9 创建DataSourceConfig
在com.zbbmeta.config包下创建DynamicDataSourceConfig类中配置MyBatis-Plus的相关内容。
@Configuration
@MapperScan("com.zbbmeta.mapper")
public class DynamicDataSourceConfig {
@Autowired
private DataSource masterDataSource;
@Autowired
private DataSource slaveDataSource;
// 配置动态数据源
@Bean
@Primary
public DataSource dynamicDataSource() {
Map<Object, Object> targetDataSources = new HashMap<>();
targetDataSources.put(DatabaseType.MASTER, masterDataSource);
targetDataSources.put(DatabaseType.SLAVE, slaveDataSource);
DynamicRoutingDataSource dynamicDataSource = new DynamicRoutingDataSource();
dynamicDataSource.setTargetDataSources(targetDataSources);
dynamicDataSource.setDefaultTargetDataSource(masterDataSource); // 设置默认数据源
return dynamicDataSource;
}
// 配置 MyBatis 的 SqlSessionFactory
@Bean
public SqlSessionFactory sqlSessionFactory(DataSource dynamicDataSource) throws Exception {
MybatisSqlSessionFactoryBean sessionFactoryBean = new MybatisSqlSessionFactoryBean();
sessionFactoryBean.setDataSource(dynamicDataSource);
// 设置要扫描的 mapper 接口和 XML 文件路径
sessionFactoryBean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mapper/*.xml"));
sessionFactoryBean.setTypeAliasesPackage("com.zbbmeta.entity"); // 设置实体类包路径
return sessionFactoryBean.getObject();
}
// 配置 MyBatis 的 SqlSessionTemplate
@Bean
public SqlSessionTemplate sqlSessionTemplate(SqlSessionFactory sqlSessionFactory) {
return new SqlSessionTemplate(sqlSessionFactory);
}
}
相关阅读
-
免费备案二级域名分发解析 永久免费已备案二级域名注册
今天为大家介绍免费备案二级域名分发解析和永久免费已备案二级域名注册的IT知识,一起来了解了解吧。 想要制作一个网站,域名是必不可少的。每个网站都有独一无二的域名,那么新手该
-
什么是服务器虚拟化? 服务器虚拟化的优点
下面为网友们详细介绍什么是服务器虚拟化方面的介绍,一起跟随小编看看吧! 随着云计算平台越来越成熟,服务器虚拟化技术也逐渐普及。服务器虚拟化可以将一台物理服务器分成多个虚拟
-
OSI七层网络模型物理层详解 物理层的主要功能和特点有哪些
下面为网友们详细介绍OSI七层网络模型物理层详解的相关话题,接下来一起来看看吧。 物理层是OSI模型中的第一层,它负责在物理媒介上传输原始比特流,并定义了传输介质、传输速率、编码
-
网站制作要求有哪些内容 简述网页制作的基本步骤
正文核心导读:网站制作要求有哪些内容和简述网页制作的基本步骤方面的内容,具体详情如下: 1、找专业网站建设公司。既为专业,那建站经验很丰富,有着完善的建站流程,高水准的建站


