public abstract class BaseMasterDatabaseConfiguration extends BaseDatabaseConfiguration
注意:BaseDatabaseConfiguration 和 DynamicDataSourceAutoConfiguration 只能同时加载一个
不使用多数据源模式时,一个服务如何配置多数据源?
1. 本类的子类的 @MapperScan(basePackages = {"top.tangyh.basic"}) 修改为 @MapperScan(basePackages = {"top.tangyh.basic.product.dao"}) 2. 修改本类的子类的 @ConfigurationProperties(prefix = "spring.datasource.druid") 为 @ConfigurationProperties(prefix = "spring.datasource.druid.master") 3. 在lamp-xxx-server层复制该类,重命名为 SlaveDatabaseAutoConfiguration (跟AuthorityDatabaseAutoConfiguration放一起) 4. 修改 DATABASE_PREFIX 为 slave (任意命名,不要跟当前的重复即可) 5. 修改 @ConfigurationProperties(prefix = "spring.datasource.druid") 为 @ConfigurationProperties(prefix = "spring.datasource.druid.slave") 6. SlaveDatabaseAutoConfiguration 中的 basePackages = {"top.tangyh.basic"}, 修改为 basePackages = {"top.tangyh.basic.order.dao"} # 这个路径根据你的情况修改 7. mysql.yml 中增加2个数据源的配置 spring.database.druid.master 和 spring.database.druid.slave 8. mysql.yml 中将 mybatis-plus: 相关的所有配置完整的复制一份为: mybatis-plus-slave: , 并修改各自的子项 mapper-locations: 进行修改 8. 复制 MybatisPlusProperties 为 MybatisPlusSlaveProperties, 并修改类上的配置为 @ConfigurationProperties(prefix = "mybatis-plus-slave") 9. SlaveDatabaseAutoConfiguration 类上面需要配置 AuthorityDatabaseAutoConfiguration 类上的一系列注解 10. SlaveDatabaseAutoConfiguration 类上面需要配置 @EnableConfigurationProperties({MybatisPlusSlaveProperties.class}) , 构造器第一个参数也改成 MybatisPlusSlaveProperties
完成上述修改后, 位于top.tangyh.basic.product.dao 包下的dao 将操作 master 库, top.tangyh.basic.order.dao中的dao 将操作slave库
| 限定符和类型 | 字段和说明 |
|---|---|
static String |
DATABASE_PREFIX
每个数据源配置不同即可
|
applicationContext, configurationCustomizers, databaseIdProvider, databaseProperties, interceptors, languageDrivers, mybatisPlusPropertiesCustomizers, properties, resourceLoader, typeHandlers| 构造器和说明 |
|---|
BaseMasterDatabaseConfiguration(com.baomidou.mybatisplus.autoconfigure.MybatisPlusProperties properties,
DatabaseProperties databaseProperties,
org.springframework.beans.factory.ObjectProvider<org.apache.ibatis.plugin.Interceptor[]> interceptorsProvider,
org.springframework.beans.factory.ObjectProvider<org.apache.ibatis.type.TypeHandler[]> typeHandlersProvider,
org.springframework.beans.factory.ObjectProvider<org.apache.ibatis.scripting.LanguageDriver[]> languageDriversProvider,
org.springframework.core.io.ResourceLoader resourceLoader,
org.springframework.beans.factory.ObjectProvider<org.apache.ibatis.mapping.DatabaseIdProvider> databaseIdProvider,
org.springframework.beans.factory.ObjectProvider<List<com.baomidou.mybatisplus.autoconfigure.ConfigurationCustomizer>> configurationCustomizersProvider,
org.springframework.beans.factory.ObjectProvider<List<com.baomidou.mybatisplus.autoconfigure.MybatisPlusPropertiesCustomizer>> mybatisPlusPropertiesCustomizerProvider,
org.springframework.context.ApplicationContext applicationContext) |
| 限定符和类型 | 方法和说明 |
|---|---|
DataSource |
dataSource(DataSource dataSource) |
DataSource |
druidDataSource()
数据源信息
|
org.springframework.jdbc.datasource.DataSourceTransactionManager |
dsTransactionManager(DataSource dataSource)
数据源事务管理器
|
org.apache.ibatis.session.SqlSessionFactory |
getSqlSessionFactory(DataSource dataSource)
mybatis Sql Session 工厂
|
org.mybatis.spring.SqlSessionTemplate |
getSqlSessionTemplate(org.apache.ibatis.session.SqlSessionFactory sqlSessionFactory) |
afterPropertiesSet, applyConfiguration, sqlSessionFactorypublic BaseMasterDatabaseConfiguration(com.baomidou.mybatisplus.autoconfigure.MybatisPlusProperties properties,
DatabaseProperties databaseProperties,
org.springframework.beans.factory.ObjectProvider<org.apache.ibatis.plugin.Interceptor[]> interceptorsProvider,
org.springframework.beans.factory.ObjectProvider<org.apache.ibatis.type.TypeHandler[]> typeHandlersProvider,
org.springframework.beans.factory.ObjectProvider<org.apache.ibatis.scripting.LanguageDriver[]> languageDriversProvider,
org.springframework.core.io.ResourceLoader resourceLoader,
org.springframework.beans.factory.ObjectProvider<org.apache.ibatis.mapping.DatabaseIdProvider> databaseIdProvider,
org.springframework.beans.factory.ObjectProvider<List<com.baomidou.mybatisplus.autoconfigure.ConfigurationCustomizer>> configurationCustomizersProvider,
org.springframework.beans.factory.ObjectProvider<List<com.baomidou.mybatisplus.autoconfigure.MybatisPlusPropertiesCustomizer>> mybatisPlusPropertiesCustomizerProvider,
org.springframework.context.ApplicationContext applicationContext)
@Bean(value="masterSqlSessionTemplate")
public org.mybatis.spring.SqlSessionTemplate getSqlSessionTemplate(@Qualifier(value="masterSqlSessionFactory")
org.apache.ibatis.session.SqlSessionFactory sqlSessionFactory)
@Bean(name="masterDruidDataSource",
initMethod="init")
public DataSource druidDataSource()
@Primary @Bean(name="masterDataSource") public DataSource dataSource(@Qualifier(value="masterDruidDataSource") DataSource dataSource)
@Bean(value="masterSqlSessionFactory")
@Primary
public org.apache.ibatis.session.SqlSessionFactory getSqlSessionFactory(@Qualifier(value="masterDataSource")
DataSource dataSource)
throws Exception
Exception - 异常@Bean(name="masterTransactionManager")
@Primary
public org.springframework.jdbc.datasource.DataSourceTransactionManager dsTransactionManager(@Qualifier(value="masterDataSource")
DataSource dataSource)
Copyright © 2021. All rights reserved.