Forráskód Böngészése

多数据源动态配置

gaodm 5 éve
szülő
commit
9702fb70ac

+ 6 - 0
aipt-service/pom.xml

@@ -149,6 +149,12 @@
             <artifactId>mybatis-spring-boot-starter</artifactId>
         </dependency>
 
+        <!--多数据源-->
+        <dependency>
+            <groupId>com.baomidou</groupId>
+            <artifactId>dynamic-datasource-spring-boot-starter</artifactId>
+        </dependency>
+
         <dependency>
             <groupId>org.springframework.cloud</groupId>
             <artifactId>spring-cloud-starter-stream-rabbit</artifactId>

+ 2 - 1
aipt-service/src/main/java/com/diagbot/AiptServiceApplication.java

@@ -1,5 +1,6 @@
 package com.diagbot;
 
+import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
@@ -20,7 +21,7 @@ import org.springframework.cloud.openfeign.EnableFeignClients;
  * @time: 2018/8/7 9:24
  */
 @SpringBootApplication(exclude = { DataSourceAutoConfiguration.class, HibernateJpaAutoConfiguration.class,
-        JmxAutoConfiguration.class, ThymeleafAutoConfiguration.class })
+        JmxAutoConfiguration.class, ThymeleafAutoConfiguration.class, DruidDataSourceAutoConfigure.class })
 @EnableEurekaClient
 @EnableFeignClients({ "com.diagbot.client" })
 @EnableHystrixDashboard

+ 2 - 0
aipt-service/src/main/java/com/diagbot/service/DisclaimerInformationService.java

@@ -1,5 +1,6 @@
 package com.diagbot.service;
 
+import com.baomidou.dynamic.datasource.annotation.DS;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.diagbot.dto.DisclaimerInformationDTO;
 import com.diagbot.entity.DisclaimerInformation;
@@ -14,6 +15,7 @@ import java.util.List;
  * @author wangfeng
  * @since 2018-11-20
  */
+@DS("slave")
 public interface DisclaimerInformationService extends IService<DisclaimerInformation> {
 
     public List<DisclaimerInformationDTO> getDisclaimerInformationAll();

+ 2 - 0
aipt-service/src/main/java/com/diagbot/service/VersionDetailService.java

@@ -1,5 +1,6 @@
 package com.diagbot.service;
 
+import com.baomidou.dynamic.datasource.annotation.DS;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.diagbot.entity.VersionDetail;
 
@@ -11,6 +12,7 @@ import com.diagbot.entity.VersionDetail;
  * @author wangfeng
  * @since 2018-11-20
  */
+@DS("slave")
 public interface VersionDetailService extends IService<VersionDetail> {
 
 }

+ 2 - 0
aipt-service/src/main/java/com/diagbot/service/VersionInfoService.java

@@ -1,5 +1,6 @@
 package com.diagbot.service;
 
+import com.baomidou.dynamic.datasource.annotation.DS;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.diagbot.entity.VersionInfo;
 
@@ -11,6 +12,7 @@ import com.diagbot.entity.VersionInfo;
  * @author wangfeng
  * @since 2018-11-20
  */
+@DS("slave")
 public interface VersionInfoService extends IService<VersionInfo> {
 
 }

+ 59 - 43
config-server/src/main/resources/shared/aipt-service-local.yml

@@ -4,51 +4,67 @@ server:
 # 驱动配置信息
 spring:
   datasource:
-    druid:
-      driver-class-name: com.mysql.cj.jdbc.Driver
-      platform: mysql
-      url: jdbc:mysql://192.168.2.236:3306/med?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&characterSetResults=utf8&useSSL=false
-      username: root
-      password: lantone
-      # 连接池的配置信息
-      # 初始化大小,最小,最大
-      initialSize: 5
-      minIdle: 5
-      maxActive: 20
-      # 配置获取连接等待超时的时间
-      maxWait: 60000
-      # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
-      timeBetweenEvictionRunsMillis: 60000
-      # 配置一个连接在池中最小生存的时间,单位是毫秒
-      minEvictableIdleTimeMillis: 300000
-      validationQuery: SELECT 1 FROM DUAL
-      testWhileIdle: true
-      testOnBorrow: false
-      testOnReturn: false
-      # 打开PSCache,并且指定每个连接上PSCache的大小
-      poolPreparedStatements: true
-      maxPoolPreparedStatementPerConnectionSize: 20
-      # 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
-      filters.commons-log.connection-logger-name: wall,log4j
-      filter:
-        stat:
+    dynamic:
+      primary: master
+      druid:
+        # 连接池的配置信息
+        # 初始化大小,最小,最大
+        initialSize: 5
+        minIdle: 5
+        maxActive: 20
+        # 配置获取连接等待超时的时间
+        maxWait: 60000
+        # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
+        timeBetweenEvictionRunsMillis: 60000
+        # 配置一个连接在池中最小生存的时间,单位是毫秒
+        minEvictableIdleTimeMillis: 300000
+        validationQuery: SELECT 1 FROM DUAL
+        testWhileIdle: true
+        testOnBorrow: false
+        testOnReturn: false
+        # 打开PSCache,并且指定每个连接上PSCache的大小
+        poolPreparedStatements: true
+        maxPoolPreparedStatementPerConnectionSize: 20
+        # 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
+        filters.commons-log.connection-logger-name: wall,log4j
+        share-prepared-statements: true
+        filter:
+          stat:
+            enabled: true
+            mergeSql: true
+            log-slow-sql: true
+            slow-sql-millis: 2000
+        #监控配置
+        web-stat-filter:
           enabled: true
-          mergeSql: true
-          log-slow-sql: true
-          slow-sql-millis: 2000
-      #监控配置
-      web-stat-filter:
-        enabled: true
-        url-pattern: /*
-        exclusions: '*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico,/druid/*'
+          url-pattern: /*
+          exclusions: '*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico,/druid/*'
 
-      # StatViewServlet配置,说明请参考Druid Wiki,配置_StatViewServlet配置
-      stat-view-servlet:
-        enabled: true
-        url-pattern: /druid/*
-        reset-enable: false
-        login-username: root
-        login-password: root
+        # StatViewServlet配置,说明请参考Druid Wiki,配置_StatViewServlet配置
+        stat-view-servlet:
+          enabled: true
+          url-pattern: /druid/*
+          reset-enable: false
+          login-username: root
+          login-password: root
+      # 数据库配置
+      datasource:
+        master:
+          driver-class-name: com.mysql.cj.jdbc.Driver
+          platform: mysql
+          url: jdbc:mysql://192.168.2.236:3306/med?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&characterSetResults=utf8&useSSL=false
+          username: root
+          password: lantone
+          druid:
+            initial-size: 5
+        slave:
+          driver-class-name: com.mysql.cj.jdbc.Driver
+          platform: mysql
+          url: jdbc:mysql://192.168.2.241:3306/med?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&characterSetResults=utf8&useSSL=false
+          username: root
+          password: lantone
+          druid:
+            initial-size: 5
 
   cloud:
     stream:

+ 8 - 0
pom.xml

@@ -54,6 +54,7 @@
         <mybatis-plus-boot-starter.version>3.2.0</mybatis-plus-boot-starter.version>
         <mybatis-spring-boot.version>2.1.1</mybatis-spring-boot.version>
         <druid.version>1.1.21</druid.version>
+        <dynamicdb.version>3.0.0</dynamicdb.version>
         <swagger.version>2.9.2</swagger.version>
         <!--<swagger-bootstrap.version>1.9.1</swagger-bootstrap.version>-->
         <logstash.version>5.2</logstash.version>
@@ -114,6 +115,13 @@
                 <version>${druid.version}</version>
             </dependency>
 
+            <!--多数据源-->
+            <dependency>
+                <groupId>com.baomidou</groupId>
+                <artifactId>dynamic-datasource-spring-boot-starter</artifactId>
+                <version>${dynamicdb.version}</version>
+            </dependency>
+
             <!--swagger-->
             <dependency>
                 <groupId>io.springfox</groupId>