springboot配置多数据源

在开发过程中,为了满足需求,会从第三方获取需要的数据,这个时候,除了使用原始的jdbc方式读取数据外,还可以配置多数据源来获取我们想要的数据。

第一步:pom.xml添加依赖

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>1.1.13</version>
        </dependency>

        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>dynamic-datasource-spring-boot-starter</artifactId>
            <version>2.5.6</version>
        </dependency>

第二步:yml文件配置

application.yml

# Tomcat
server:
  port: 9999

spring:
  # 环境 local/dev|prod
  profiles:
    active: dev

  servlet:
    multipart:
      max-file-size: 100MB
      max-request-size: 100MB
      enabled: true

#mybatis
mybatis-plus:
  mapper-locations: classpath*:/mapper/**/*.xml
  #实体扫描,多个package用逗号或者分号分隔
  typeAliasesPackage: com/example/work.*.entity
  global-config:
    #数据库相关配置
    db-config:
      #主键类型  AUTO:"数据库ID自增", INPUT:"用户输入ID", ID_WORKER:"全局唯一ID (数字类型唯一ID)", UUID:"全局唯一ID UUID";
      id-type: AUTO
      logic-delete-value: -1
      logic-not-delete-value: 0
    banner: false
  #原生配置
  configuration:
    map-underscore-to-camel-case: true
    cache-enabled: false
    call-setters-on-nulls: true
    jdbc-type-for-null: 'null'

application-dev.yml

spring:
    # 数据源配置
    datasource:
        type: com.alibaba.druid.pool.DruidDataSource
        dynamic:
            # 设置默认的数据源
            primary: db1
            datasource:
                db1:
                    url: jdbc:mysql://127.0.0.1:3306/cup_report?rewriteBatchedStatements=true&useUnicode=true&characterEncoding=utf-8&useSSL=false&useTimezone=true&serverTimezone=Asia/Shanghai
                    username: root
                    password: YWtzSHVPOmY5r1bAymMXD6qTS0reqef8yuibhI/4f6THnvhfDnQgSC40gVQgW1RhVtYIu7KRqCN963gR9YOTwQ==
                    driver-class-name: com.mysql.cj.jdbc.Driver
                    druid:
                        initial-size: 5 #启动程序时,在连接池中初始化多少个连接
                        max-active: 20 #连接池中最多支持多少个活动会话
                        min-idle: 5 #回收空闲连接时,将保证至少有minIdle个连接
                        max-wait: 60000 #程序向连接池中请求连接时,超过maxWait的值后,认为本次请求失败,即连接池
                        filters: stat,slf4j
                        publicKey: MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAJDhT8/x3jUFVnena578FT+42PV+wRK5XMYIS2GcUk7RyvnXdIov5Utwl+XOzmWfp1I1/QlMT8QdSkEIyd7+k+MCAwEAAQ==
                        connectionProperties: config.decrypt=true;config.decrypt.key=${publicKey};
                db2:
                    url: jdbc:mysql://127.0.0.1:3306/cup?rewriteBatchedStatements=true&useUnicode=true&characterEncoding=utf-8&useSSL=false&useTimezone=true&serverTimezone=Asia/Shanghai
                    username: root
                    password: YWtzSHVPOmY5r1bAymMXD6qTS0reqef8yuibhI/4f6THnvhfDnQgSC40gVQgW1RhVtYIu7KRqCN963gR9YOTwQ==
                    driver-class-name: com.mysql.cj.jdbc.Driver
                    druid:
                        initial-size: 5 #启动程序时,在连接池中初始化多少个连接
                        max-active: 20 #连接池中最多支持多少个活动会话
                        min-idle: 5 #回收空闲连接时,将保证至少有minIdle个连接
                        max-wait: 60000 #程序向连接池中请求连接时,超过maxWait的值后,认为本次请求失败,即连接池
                        filters: stat,slf4j
                        publicKey: MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAJDhT8/x3jUFVnena578FT+42PV+wRK5XMYIS2GcUk7RyvnXdIov5Utwl+XOzmWfp1I1/QlMT8QdSkEIyd7+k+MCAwEAAQ==
                        connectionProperties: config.decrypt=true;config.decrypt.key=${publicKey};

第三步:在启动类上加上如下配置

@SpringBootApplication(exclude = {DruidDataSourceAutoConfigure.class})
public class WorkApplication {

    public static void main(String[] args) {
        SpringApplication.run(WorkApplication.class, args);
    }

}

DruidDataSourceAutoConfigure.class默认会帮我们自动配置单数据源,所以,如果想在项目中使用多数据源就需要排除它,手动指定多数据源。

第四步:启动程序
springboot配置多数据源_第1张图片
如上图所示,表明多数据源配置成功

前面的application-dev.yml配置文件我们配置了默认的数据源是db1,操作这个数据库的写法跟之前一样,那么我们要获取第三方数据该如何操作了,其实只需在实现类上加个注解即可

@Service
@DS("db2")
public class VmLogsServiceImpl extends ServiceImpl<VmLogsMapper, VmLogs> implements VmLogsService {
}

@DS(“db2”)这个注解就表示切换到db2这个数据源。

你可能感兴趣的:(配置多数据源,yml文件多数据源配置,切换数据源注解)