MultipleDataSourceConfig.java 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. package com.sooka.sponest.data.utils.database;
  2. import com.alibaba.druid.pool.DruidDataSource;
  3. import org.springframework.beans.factory.annotation.Qualifier;
  4. import org.springframework.boot.context.properties.ConfigurationProperties;
  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. import java.util.HashMap;
  10. import java.util.Map;
  11. @Configuration
  12. public class MultipleDataSourceConfig {
  13. @Bean("master")
  14. @ConfigurationProperties(prefix = "spring.datasource.dynamic.datasource.master")
  15. public DataSource createMasterDataSource() {
  16. return new DruidDataSource();
  17. }
  18. @Bean("dbSystemData")
  19. @ConfigurationProperties(prefix = "spring.datasource.dynamic.datasource.db-system")
  20. public DataSource createSystemDataSource() {
  21. return new DruidDataSource();
  22. }
  23. @Bean("dbCenterTranmanager")
  24. @ConfigurationProperties(prefix = "spring.datasource.dynamic.datasource.db-center-tranmanager")
  25. public DataSource createTranmanagerDataSource() {
  26. return new DruidDataSource();
  27. }
  28. @Bean("dbCenterData")
  29. @ConfigurationProperties(prefix = "spring.datasource.dynamic.datasource.db-center-data")
  30. public DataSource createDataDataSource() {
  31. return new DruidDataSource();
  32. }
  33. @Bean("dbCenterEvent")
  34. @ConfigurationProperties(prefix = "spring.datasource.dynamic.datasource.db-center-event")
  35. public DataSource createEventDataSource() {
  36. return new DruidDataSource();
  37. }
  38. @Bean("dbCenterMonitor")
  39. @ConfigurationProperties(prefix = "spring.datasource.dynamic.datasource.db-center-monitor")
  40. public DataSource createMonitorDataSource() {
  41. return new DruidDataSource();
  42. }
  43. @Bean("dbCenterTask")
  44. @ConfigurationProperties(prefix = "spring.datasource.dynamic.datasource.db-center-task")
  45. public DataSource createTaskDataSource() {
  46. return new DruidDataSource();
  47. }
  48. @Bean("dbCenterEvaluation")
  49. @ConfigurationProperties(prefix = "spring.datasource.dynamic.datasource.db-center-evaluation")
  50. public DataSource createEvaluationDataSource() {
  51. return new DruidDataSource();
  52. }
  53. @Bean("dbCenterFire")
  54. @ConfigurationProperties(prefix = "spring.datasource.dynamic.datasource.db-center-fire")
  55. public DataSource createFireDataSource() {
  56. return new DruidDataSource();
  57. }
  58. @Bean("dbCenterStraw")
  59. @ConfigurationProperties(prefix = "spring.datasource.dynamic.datasource.db-center-straw")
  60. public DataSource createStrawDataSource() {
  61. return new DruidDataSource();
  62. }
  63. @Bean("dbCenterPests")
  64. @ConfigurationProperties(prefix = "spring.datasource.dynamic.datasource.db-center-pests")
  65. public DataSource createPestsDataSource() {
  66. return new DruidDataSource();
  67. }
  68. @Bean("dbCenterComprehensive")
  69. @ConfigurationProperties(prefix = "spring.datasource.dynamic.datasource.db-center-comprehensive")
  70. public DataSource createComprehensiveDataSource() {
  71. return new DruidDataSource();
  72. }
  73. @Bean("dbCenterOnest")
  74. @ConfigurationProperties(prefix = "spring.datasource.dynamic.datasource.db-center-onest")
  75. public DataSource createOnestDataSource() {
  76. return new DruidDataSource();
  77. }
  78. /**
  79. * 设置动态数据源,通过@Primary 来确定主DataSource
  80. *
  81. * @return
  82. */
  83. @Bean
  84. @Primary
  85. public DataSource createDynamicDataSource(@Qualifier("master") DataSource master,
  86. @Qualifier("dbSystemData") DataSource dbSystemData,
  87. @Qualifier("dbCenterData") DataSource dbCenterData,
  88. @Qualifier("dbCenterEvent") DataSource dbCenterEvent,
  89. @Qualifier("dbCenterMonitor") DataSource dbCenterMonitor,
  90. @Qualifier("dbCenterTask") DataSource dbCenterTask,
  91. @Qualifier("dbCenterEvaluation") DataSource dbCenterEvaluation,
  92. @Qualifier("dbCenterFire") DataSource dbCenterFire,
  93. @Qualifier("dbCenterStraw") DataSource dbCenterStraw,
  94. @Qualifier("dbCenterPests") DataSource dbCenterPests,
  95. @Qualifier("dbCenterComprehensive") DataSource dbCenterComprehensive,
  96. @Qualifier("dbCenterOnest") DataSource dbCenterOnest,
  97. @Qualifier("dbCenterTranmanager") DataSource dbCenterTranmanager) {
  98. DynamicDataSource dynamicDataSource = new DynamicDataSource();
  99. //设置默认数据源
  100. dynamicDataSource.setDefaultTargetDataSource(master);
  101. //配置多数据源
  102. Map<Object, Object> map = new HashMap<>();
  103. map.put("master", master);
  104. map.put("db-system", dbSystemData);
  105. map.put("db-center-tranmanager", dbCenterTranmanager);
  106. map.put("db-center-data", dbCenterData);
  107. map.put("db-center-event", dbCenterEvent);
  108. map.put("db-center-monitor", dbCenterMonitor);
  109. map.put("db-center-task", dbCenterTask);
  110. map.put("db-center-evaluation", dbCenterEvaluation);
  111. map.put("db-center-fire", dbCenterFire);
  112. map.put("db-center-straw", dbCenterStraw);
  113. map.put("db-center-pests", dbCenterPests);
  114. map.put("db-center-comprehensive", dbCenterComprehensive);
  115. map.put("db-center-onest", dbCenterOnest);
  116. dynamicDataSource.setTargetDataSources(map);
  117. return dynamicDataSource;
  118. }
  119. }