Spring Boot 集成 Dynamic多数据源配置

Spring Boot 集成 Dynamic多数据源配置

基础配置添加

引入依赖

        
        <dependency>
            <groupId>mysqlgroupId>
            <artifactId>mysql-connector-javaartifactId>
            <version>8.0.19version>
        dependency>

        
        <dependency>
            <groupId>com.alibabagroupId>
            <artifactId>druid-spring-boot-starterartifactId>
            <version>1.2.11version>
        dependency>

        
        <dependency>
            <groupId>com.baomidougroupId>
            <artifactId>mybatis-plus-boot-starterartifactId>
            <version>3.4.1version>
        dependency>

        
        <dependency>
            <groupId>com.baomidougroupId>
            <artifactId>dynamic-datasource-spring-boot-starterartifactId>
            <version>2.5.5version>
        dependency>

其中 mysql-connector-java ,druid-spring-boot-starter, mybatis-plus-boot-starter 为数据库基础配置数据。Spring Boot在1.X到2.X的版本过程中,说用HikariCP做为默认连接池,使用默认连接池,这边使用Duird替换原有连接池,实现数据监控与日志输出。

application.yml配置

server:
  port: 8080
spring:
  application:
    name: spring-boot-demo
  profiles:
    active: druid

# MyBatis配置
mybatis:
  # 搜索指定包别名
  typeAliasesPackage: com.windsoft.springboot.demo.domain
  # 配置mapper的扫描,找到所有的mapper.xml映射文件
  mapperLocations: classpath*:mapper/**/*Mapper.xml

mybatis-plus:
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #开启sql日志
    map-underscore-to-camel-case: true
    # 该配置就是将带有下划线的表字段映射为驼峰格式的实体类属性

其中 profiles: 为标注拓展配置文件,这里将多数据源的配置文件独立出来做为单独的文件,方便管理

application-druid.yml

# 数据源配置
spring:
    datasource:
        dynamic:
            primary: master #设置默认的数据源或者数据源组,默认值即为master
            strict: false #严格匹配数据源,默认false. true未匹配到指定数据源时抛异常,false使用默认数据源
            datasource:
                master:
                    url: jdbc:mysql://localhost:3306/spring-boot-demo?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8&useSSL=false
                    username: root
                    password: 
                slave:
                    url: jdbc:mysql://localhost:3306/spring-boot-demo-back?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8&useSSL=false
                    username: root
                    password: 

修改启动类配置

去除DruidDataSourceAutoConfigure的自动配置

@SpringBootApplication(exclude = {DruidDataSourceAutoConfigure.class})

需要排除自动配置,否则会导致配置类在原始的配置文件中寻找数据库的配置属性,从而导致项目无法启动。

注解使用

@DS("slave")

默认不带注解使用master数据源进行配置,注解中的名称为配置文件中多数据源的名称保持一致。

@DS("slave")
public Information search(int id) {
    return informationMapper.selectById(id);
}

带有注解的 方法 会被多数多数据源进行托管,访问不同的数据源进行数据操作,其中,注解的作用范围遵循 类 > 方法的原则

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