springboot整合Druid数据源配置文件yml和properties两版

1、导入druid数据源

<!--        引入druid数据源-->
        <!-- https://mvnrepository.com/artifact/com.alibaba/druid -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.1.23</version>
        </dependency>

2、编写配置文件

1)yml版

#druid yml版配置
spring:
  datasource:
    #   数据源基本配置
    username: root
    password: 123456
    url: jdbc:mysql://localhost:3306/jdbc?useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true
    driver-class-name: com.mysql.cj.jdbc.Driver
    # 指定数据源
    type: com.alibaba.druid.pool.DruidDataSource
    # 下面为连接池的补充设置,应用到上面所有数据源中
    # 初始化大小,最小,最大
    initial-size: 5
    min-idle: 5
    max-active: 20
    # 配置获取连接等待超时的时间
    max-wait: 60000
    # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
    time-between-eviction-runs-millis: 60000
    # 配置一个连接在池中最小生存的时间,单位是毫秒
    min-evictable-idle-time-millis: 300000
    validation-query: SELECT 1 FROM DUAL
    test-while-idle: true
    test-on-borrow: false
    test-on-return: false
    # 打开PSCache,并且指定每个连接上PSCache的大小
    pool-prepared-statements: true
    #   配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
    max-pool-prepared-statement-per-connection-size: 20
    filters: stat,wall
    # 合并多个DruidDataSource的监控数据
    #useGlobalDataSourceStat: true
    # 通过connectProperties属性来打开mergeSql功能;慢SQL记录
    connect-properties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000

2)properties版

## Druid properties版配置
spring.datasource.url =  jdbc:mysql://localhost:3306/jdbc?useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true
spring.datasource.username = root
spring.datasource.password =  123456
spring.datasource.driverClassName = com.mysql.cj.jdbc.Driver
# druid配置
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
# druid参数调优(可选)
# 初始化大小,最小,最大
spring.datasource.druid.initial-size=5
spring.datasource.druid.min-idle=5
spring.datasource.druid.max-active=20
# 配置获取连接等待超时的时间
spring.datasource.druid.max-wait=60000
# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
spring.datasource.druid.time-between-eviction-runs-millis=60000
# 配置一个连接在池中最小生存的时间,单位是毫秒
spring.datasource.druid.min-evictable-idle-time-millis=300000
# 测试连接
spring.datasource.druid.validation-query=select 'x'
spring.datasource.druid.test-while-idle=true
spring.datasource.druid.test-on-borrow=false
spring.datasource.druid.test-on-return=false
# 打开PSCache,并且指定每个连接上PSCache的大小
spring.datasource.druid.pool-prepared-statements=true
spring.datasource.druid.max-pool-prepared-statement-per-connection-size=20
# 配置监控统计拦截的filters
spring.datasource.druid.filters=stat
# asyncInit是1.1.4中新增加的配置,如果有initialSize数量较多时,打开会加快应用启动时间
spring.datasource.druid.async-init=true


## Druid监控
# 进行Druid的监控配置
# Druid内置提供一个StatFilter,用于统计监控信息(https://github.com/alibaba/druid/wiki/%E9%85%8D%E7%BD%AE_StatFilter)
# 启用StatFilter
spring.datasource.druid.web-stat-filter.enabled=true
# StatFilter过滤匹配
spring.datasource.druid.web-stat-filter.url-pattern=/* 
spring.datasource.druid.web-stat-filter.exclusions=*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico,/druid/*
# 缺省sessionStatMaxCount是1000个。你可以按需要进行配置
spring.datasource.druid.web-stat-filter.session-stat-max-count=1000 
# 关闭session统计功能
spring.datasource.druid.web-stat-filter.session-stat-enable=true 
# 配置profileEnable能够监控单个url调用的sql列表
spring.datasource.druid.web-stat-filter.profile-enable=true 


# StatViewServlet配置,内置监控页面配置
spring.datasource.druid.stat-view-servlet.enabled=true
spring.datasource.druid.stat-view-servlet.url-pattern=/druid/*
# 禁用HTML页面上的“Reset All”功能
spring.datasource.druid.stat-view-servlet.reset-enable=true
# 监控页面用户名和密码
spring.datasource.druid.stat-view-servlet.login-username=admin
spring.datasource.druid.stat-view-servlet.login-password=admin
# IP白名单 (没有配置或者为空,则允许所有访问)
spring.datasource.druid.stat-view-servlet.allow=127.0.0.1
# IP黑名单 (存在共同时,deny优先于allow)
spring.datasource.druid.stat-view-servlet.deny=192.168.10.1


## Spring监控配置
# Spring监控AOP切入点,如x.y.z.service.*,配置多个英文逗号分隔
spring.datasource.druid.aop-patterns=com.gavinbj.confmng.service.*
# 配置wall filter,详细参考:https://github.com/alibaba/druid/wiki/%E9%85%8D%E7%BD%AE-wallfilter
spring.datasource.druid.filter.wall.enabled=true
# 数据库指定为MySQL
spring.datasource.druid.filter.wall.db-type=mysql
# 是否允许执行Alter Table语句
spring.datasource.druid.filter.wall.config.alter-table-allow=false
# truncate语句是危险,缺省打开,若需要自行关闭
spring.datasource.druid.filter.wall.config.truncate-allow=false
# 是否循序执行删除表语句
spring.datasource.druid.filter.wall.config.drop-table-allow=false
# 是否允许非以上基本语句的其他语句,缺省关闭,通过这个选项就能够屏蔽DDL
spring.datasource.druid.filter.wall.config.none-base-statement-allow=false
# 检查UPDATE语句的WHERE子句是否是一个永真条件
spring.datasource.druid.filter.wall.config.update-where-none-check=true
# 是否允许调用Connection.getMetadata方法,这个方法调用会暴露数据库的表信息
spring.datasource.druid.filter.wall.config.metadata-allow=true
# 对被认为是攻击的SQL进行LOG.error输出
spring.datasource.druid.filter.wall.log-violation=true
# 对被认为是攻击的SQL抛出SQLExcepton
spring.datasource.druid.filter.wall.throw-exception=true




3、编写pringboot配置类

@Configuration
public class DruidConfig {

    @ConfigurationProperties(prefix = "spring.datasource")
    @Bean
    public DataSource druid(){
       return  new DruidDataSource();
    }

    //配置Druid的监控
    //1、配置一个管理后台的Servlet
    @Bean
    public ServletRegistrationBean statViewServlet(){
        ServletRegistrationBean bean = new ServletRegistrationBean(new StatViewServlet(), "/druid/*");
        Map<String,String> initParams = new HashMap<>();

        initParams.put("loginUsername","admin");
        initParams.put("loginPassword","123456");
        initParams.put("allow","");//默认就是允许所有访问
        initParams.put("deny","192.168.15.21");

        bean.setInitParameters(initParams);
        return bean;
    }


    //2、配置一个web监控的filter
    @Bean
    public FilterRegistrationBean webStatFilter(){
        FilterRegistrationBean bean = new FilterRegistrationBean();
        bean.setFilter(new WebStatFilter());

        Map<String,String> initParams = new HashMap<>();
        initParams.put("exclusions","*.js,*.css,/druid/*");

        bean.setInitParameters(initParams);

        bean.setUrlPatterns(Arrays.asList("/*"));

        return  bean;
    }
}

猜你喜欢

转载自blog.csdn.net/qq_26018075/article/details/107854964