一 、不用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的【手动狗头】