SpringBoot配置多数据源

pom文件:

        
            org.springframework.boot
            spring-boot-starter-web
        
        
        
            mysql
            mysql-connector-java
            8.0.21
        
        
            org.springframework.boot
            spring-boot-configuration-processor
            true
        
        
            org.projectlombok
            lombok
            true
        
      
        
            com.baomidou
            dynamic-datasource-spring-boot-starter
            3.3.1
        
        
        
            com.baomidou
            mybatis-plus-boot-starter
            3.4.1
        
       
        
            io.springfox
            springfox-swagger2
            2.9.2
        
        
            io.springfox
            springfox-swagger-ui
            2.9.2
        
        
            com.github.xiaoymin
            swagger-bootstrap-ui
            1.9.6
        
        
            io.swagger
            swagger-annotations
            1.5.22
        
        
            io.swagger
            swagger-models
            1.5.22
        
        
            javax.persistence
            persistence-api
            1.0
            compile
        

application中配置:

server:
  port: 8081
  servlet:
    context-path: /

spring:
  datasource:
      dynamic:
        druid: #以下是全局默认值,可以全局更改
          # 下面为连接池的补充设置,应用到上面所有数据源中
          # 初始化大小,最小,最大
          initialSize: 1
          minIdle: 3
          maxActive: 100
          # 配置获取连接等待超时的时间
          maxWait: 6000
          # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
          timeBetweenEvictionRunsMillis: 1000
          # 配置一个连接在池中最小生存的时间,单位是毫秒
          minEvictableIdleTimeMillis: 30000
          validationQuery: select 'x' FROM DUAL
          testWhileIdle: true
          testOnBorrow: false
          testOnReturn: false
          # 打开PSCache,并且指定每个连接上PSCache的大小
          poolPreparedStatements: true
          maxPoolPreparedStatementPerConnectionSize: 20
          # 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
          filters: stat,wall,slf4j
          # 通过connectProperties属性来打开mergeSql功能;慢SQL记录
          connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
        primary: master #设置默认的数据源或者数据源组,默认值即为master
        strict: true #设置严格模式,默认false不启动. 启动后在未匹配到指定数据源时候会抛出异常,不启动则使用默认数据源.
        datasource:
          master:
            url: jdbc:mysql://127.0.0.1/ceshione?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT%2B8
            username: root
            password: root
            driver-class-name: com.mysql.cj.jdbc.Driver
            type: com.alibaba.druid.pool.DruidDataSource
          # strict为false时候,可以不配置从数据源
          slave_1:
              url: jdbc:mysql://127.0.0.1/ceshitwo?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT%2B8
              username: root
              password: root
              driver-class-name: com.mysql.cj.jdbc.Driver
              type: com.alibaba.druid.pool.DruidDataSource

mybatis-plus:
  configuration:
    log-impl: org.apache.ibatis.logging.slf4j.Slf4jImpl
  global-config:
    db-config:
      logic-delete-value: 1
      logic-not-delete-value: 0
      logic-delete-field: deleted
  mapper-locations: classpath:/mapper/**.xml

@DS注解的使用

配置了多数据源后如何选择其中一个进行使用呢?这时就需要使用@DS注解去完成。

@DS 可以注解在方法上或类上,同时存在就近原则 方法上注解 优先于 类上注解

注解 结果
没有@DS 默认数据源
@DS("slave_1") dsName可以为组名也可以为具体某个库的名称

个人建议在service层类上或者方法添加@DS("slave_1"),可以用来指定数据库连接那个数据库。

@Service
@DS("slave_1")  // slave_1 多数据源从库名称 ,如果不使用@DS注解,默认连接主库
class testServiceImpl {
    @Autowired
    private ISAuUserService testService;

    public List selectAll() {
        final List list = testService.list();
        return list;
    }

}

你可能感兴趣的:(SpringBoot,spring,boot,postman,java)