DataSourceConfig.java 1.7 KB

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