Spirngboot 配置 mysql 多数据源

一 、不用druid 版本

1.1依赖

       
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.1.0</version>
        </dependency>
        
       <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.47</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/com.baomidou/dynamic-datasource-spring-boot-starter -->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>dynamic-datasource-spring-boot-starter</artifactId>
            <version>3.2.1</version>
        </dependency>

1.2yml配置文件

spring:
  datasource:
    #多数据源配置
    dynamic:
      primary: master
      strict: false
      datasource:
        # 数据库1
        master:
          driver-class-name: com.mysql.jdbc.Driver
          url: jdbc:mysql://10.8.7.27:3306/medical_waste?useSSL=false&useUnicode=true&characterEncoding=utf8&autoReconnect=true&rewriteBatchedStatements=true&serverTimezone=GMT%2B8
          username: root
          password: 123456
        # 数据库2
        medicalSystemDb:
          driver-class-name: com.mysql.jdbc.Driver
          url: jdbc:mysql://10.8.7.27:3306/medical_waste_system?useSSL=false&useUnicode=true&characterEncoding=utf8&autoReconnect=true&rewriteBatchedStatements=true&serverTimezone=GMT%2B8
          username: root
          password: 123456

在这里插入图片描述
注意:dynamic-datasource-spring-boot-starter需要新版本,不然可能报找不到第二个数据库;

二 、druid 版本

2.1 依赖 注意 要排除 spring-boot-starter-logging ,如果使用了fastdfs 也需要剔除日志,
druid依赖和druid-spring-boot-starter 两个都需要,否则启动报错。


        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-logging</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-log4j2</artifactId>
        </dependency>

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.1.10</version>
        </dependency>

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

     <!-- 这个要不要忘记了,现在用的是没druid版本-->
        <dependency>
            <groupId>com.lmax</groupId>
            <artifactId>disruptor</artifactId>
            <version>3.4.2</version>
        </dependency>

        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.1.0</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/com.baomidou/dynamic-datasource-spring-boot-starter -->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>dynamic-datasource-spring-boot-starter</artifactId>
            <version>3.2.1</version>
        </dependency>
        
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.47</version>
        </dependency>

       <!-- 如果是自己搭建的文件系统,需要去除logback 日志, 不然会冲突。不使用可以去掉-->
        <dependency>
            <groupId>com.github.tobato</groupId>
            <artifactId>fastdfs-client</artifactId>
            <version>1.26.5</version>
            <exclusions>
            <exclusion>
                <groupId>ch.qos.logback</groupId>
                <artifactId>logback-classic</artifactId>
            </exclusion>
            </exclusions>
        </dependency>

2.2 yml 配置文件

spring:
  autoconfigure:
    #自动化配置 例外处理
    exclude: com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    druid:
      stat-view-servlet:
        enabled: true
        loginUsername: admin
        loginPassword: 123456

    #多数据源配置
    dynamic:
      druid: #以下是全局默认值,可以全局更改
        #监控统计拦截的filters
        filters: stat
        #配置初始化大小/最小/最大
        initial-size: 1
        min-idle: 1
        max-active: 20
        #获取连接等待超时时间
        max-wait: 60000
        #间隔多久进行一次检测,检测需要关闭的空闲连接
        time-between-eviction-runs-millis: 60000
        #一个连接在池中最小生存的时间
        min-evictable-idle-time-millis: 300000
        validation-query: SELECT 'x'
        test-while-idle: true
        test-on-borrow: false
        test-on-return: false
        #打开PSCache,并指定每个连接上PSCache的大小。oracle设为true,mysql设为false。分库分表较多推荐设置为false
        pool-prepared-statements: false
        max-pool-prepared-statement-per-connection-size: 20
        stat:
          merge-sql: true
          log-slow-sql: true
          slow-sql-millis: 3000

      primary: master
      strict: false

      datasource:
        # 数据库1
        master:
          driver-class-name: com.mysql.jdbc.Driver
          url: jdbc:mysql://10.8.7.27:3306/medical_waste?useSSL=false&useUnicode=true&characterEncoding=utf8&autoReconnect=true&rewriteBatchedStatements=true&serverTimezone=GMT%2B8
          username: root
          password: 123456
        # 数据库2
        medicalSystemDb:
          driver-class-name: com.mysql.jdbc.Driver
          url: jdbc:mysql://10.8.7.27:3306/medical_waste_system?useSSL=false&useUnicode=true&characterEncoding=utf8&autoReconnect=true&rewriteBatchedStatements=true&serverTimezone=GMT%2B8
          username: root
          password: 123456


logging:
  config: classpath:log4j2.xml

2.3 log4j2.xml

<?xml version="1.0" encoding="UTF-8"?>
<!-- 根节点Configuration有两个属性:status和monitorinterval,有两个子节点:Appenders和Loggers(表明可以定义多个Appender和Logger) -->
<!-- status:这个用于设置log4j2自身内部的信息输出,可以不设置,当设置成trace时,会看到log4j2内部各种详细输出-->
<!-- status="off",log4j2把自身事件记录到控制台的配置,off表示不记录,其余的记录有trace,debug,info,warn,error,fatal -->
<!-- monitorInterval:用于指定log4j自动重新配置的监测间隔时间,单位是s,最小是5s;Log4j能够自动检测修改配置 文件和重新配置本身,设置间隔秒数-->
<Configuration status="off">
    <Appenders>
        <!-- SYSTEM_OUT是输出到统一的输出流,没有指定日志文件 -->
        <Console name="Console" target="SYSTEM_OUT">
            <PatternLayout pattern="[%d{yyyy-MM-dd HH:mm:ss.SSS}]%p[%t]%c{1}|%m%n" />
        </Console>

        <!-- RollingFile节点用来定义超过指定大小自动删除旧的创建新的的Appender.   name:指定Appender的名字.   fileName:指定输出日志的目的文件带全路径的文件名.   filePattern:指定新建日志文件的名称格式. -->
        <!-- 详细日志 -->
        <RollingRandomAccessFile name="DetailRollingFile" fileName="log/test/test_detail.log" filePattern="log/test/test_detail.log.%d{yyyyMMddHH}" immediateFlush="true">
            <!--控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch)-->
            <ThresholdFilter level="INFO" onMatch="ACCEPT" onMismatch="DENY"/>
            <!-- PatternLayout:输出格式,不设置默认为:%m%n. -->
            <PatternLayout pattern="[%d{yyyy-MM-dd HH:mm:ss.SSS}]%p[%t]%c{1}|%m%n" charset="UTF-8"/>
            <!-- Policies:指定滚动日志的策略. -->
            <Policies>
                <!-- TimeBasedTriggeringPolicy:Policies子节点,基于时间的滚动策略,interval属性用来指定多久滚动一次,默认是1 hour。modulate=true用来调整时间:比如现在是早上3am,interval是4,那么第一次滚动是在4am,接着是8am,12am...而不是7am. -->
                <TimeBasedTriggeringPolicy interval="1"/>
            </Policies>
        </RollingRandomAccessFile>
        <!-- 简要日志 -->
        <RollingRandomAccessFile name="MpspRollingFile" fileName="log/test/mpsp.log" filePattern="log/test/mpsp.log.%d{yyyyMMddHH}">
            <ThresholdFilter level="INFO" onMatch="ACCEPT" onMismatch="DENY"/>
            <PatternLayout pattern="[%d{yyyy-MM-dd HH:mm:ss.SSS}]%m%n"/>
            <Policies>
                <TimeBasedTriggeringPolicy interval="1"/>
            </Policies>
            <!-- DefaultRolloverStrategy属性如不设置,则默认为最多同一文件夹下7个文件,用来指定同一个文件夹下最多有几个日志文件时开始删除最旧的,创建新的(通过max属性) -->
            <!--<DefaultRolloverStrategy max="200"/>-->
        </RollingRandomAccessFile>
        <!-- 性能监控日志 -->
        <RollingRandomAccessFile name="ssRollingLog" fileName="log/test/ss.log" filePattern="log/test/ss.log.%d{yyyyMMddHH}">
            <ThresholdFilter level="INFO" onMatch="ACCEPT" onMismatch="DENY"/>
            <PatternLayout pattern="[%d{yyyy-MM-dd HH:mm:ss.SSS}]%m%n"/>
            <Policies>
                <TimeBasedTriggeringPolicy interval="1"/>
            </Policies>
        </RollingRandomAccessFile>
        <!-- sql监控日志 -->
        <RollingRandomAccessFile name="sqlRollingLog" fileName="log/test/sql.log" filePattern="log/test/sql.log.%d{yyyyMMddHH}">
            <ThresholdFilter level="debug" onMatch="ACCEPT" onMismatch="DENY"/>
            <PatternLayout pattern="[%d{yyyy-MM-dd HH:mm:ss.SSS}]%p[%t]%c{1}|%m%n" charset="UTF-8"/>
            <Policies>
                <TimeBasedTriggeringPolicy interval="1"/>
            </Policies>
        </RollingRandomAccessFile>
    </Appenders>

    <!--定义logger,只有定义了logger并引入的appender,appender才会生效-->
    <Loggers>
        <!-- additivity的值如果为false的话,就不会在控制台上输出或者为该Logger再增加一个输出源Consloe -->
        <Logger name="mpspLog" level="INFO" additivity="false">
            <AppenderRef ref="MpspRollingFile" />
        </Logger>
        <Logger name="ssLog" level="INFO" additivity="false">
            <AppenderRef ref="ssRollingLog" />
        </Logger>
        <Logger name="detailLog" level="INFO" additivity="false">
            <AppenderRef ref="DetailRollingFile" />
        </Logger>
        <Logger name="com.umpay" level="INFO" additivity="false">
            <AppenderRef ref="DetailRollingFile" />
        </Logger>

        <logger name="druid.sql.Statement" level="debug" additivity="false">
            <appender-ref ref="sqlRollingLog"/>
        </logger>
        <logger name="druid.sql.ResultSet" level="debug" additivity="false">
            <appender-ref ref="sqlRollingLog"/>
        </logger>

        <Root level="info">
            <AppenderRef ref="Console" />
        </Root>
    </Loggers>
</Configuration>

就是因为不想改原来的日志文件,放弃使用durid的【手动狗头】

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值