| 123456789101112131415161718192021222324252627282930313233343536373839404142 |
- package com.malk.config.mutilSource;
- import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
- import org.springframework.boot.context.properties.ConfigurationProperties;
- import org.springframework.boot.jdbc.DataSourceBuilder;
- import org.springframework.context.annotation.Bean;
- import org.springframework.context.annotation.Configuration;
- import org.springframework.context.annotation.Primary;
- import javax.sql.DataSource;
- /**
- * 数据源配置
- * -
- * AOP多数据源切换:
- * - 1. pom文件添加spring-boot-starter-jdbc依赖
- * - 2. yml配置多主从数据库, 数据库地址从url修改为jdbc-url
- * - 3. 通过spel.multiSource控制是否多数据源, 屏蔽JpaConfiguration, 加载DataSourceConfig
- * 不同数据源存在同名表:
- * - 1. 实体只需要在dao层区分即可, 作用域下实体包路径是不同的
- * - 2. 同名的dao通过@Repository("slaveMcTableDao")定义区分; 在Autowired引用时候属性上添加@Qualifier("slaveMcTableDao")注解
- * -
- * 单数据源切换: 在dao与entity均添加mutual作为公共模块, 单数据源下服务于JpaConfiguration, 若是多数据源与PrimaryConfig一起作为主数据源配置
- */
- @ConditionalOnProperty(name = "spel.multiSource", havingValue = "true")
- @Configuration
- public class DataSourceConfig {
- @Bean(name = "primaryDataSource")
- @ConfigurationProperties(prefix = "spring.datasource.primary")
- @Primary
- public DataSource primaryDataSource() {
- return DataSourceBuilder.create().build();
- }
- @Bean(name = "slaveDataSource")
- @ConfigurationProperties(prefix = "spring.datasource.slave")
- public DataSource slaveDataSource() {
- return DataSourceBuilder.create().build();
- }
- }
|