idea下SpringBoot2.0x整合Druid数据源以及Druid监控

1. 引入依赖

        
        
        
            com.alibaba
            druid
            1.1.11
        

2.配置application.yml:

spring:
  datasource:
    username: root
    password: root
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://localhost:3306/springboot
#    schema:
#      - classpath:sql/department.sql
#      - classpath:sql/employee.sql
#    spring2.0后要加上这个配置schema才生效,表示始终执行初始化
    initialization-mode: ALWAYS
    type: com.alibaba.druid.pool.DruidDataSource

#    ==========数据源其他配置==========
#    初始化数量
    initialSize: 5
#    允许的最小空闲连接数
    minIdle: 5
#    最大活跃数
    maxActive: 20
#    最大连接等待超时时间,单位是毫秒(ms)
    maxWait: 60000
#    配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
    timeBetweenEvictionRunsMillis: 60000
#    配置一个连接在池中最小生存的时间,单位是毫秒
    minEvictableIdleTimeMillis: 300000
#    验证数据库连接的查询语句,这个查询语句必须是至少返回一条数据的SELECT语句
    validationQuery: SELECT 1
#    建议配置为true,不影响性能,并且保证安全性。申请连接的时候检测,如果空闲时间大于timeBetweenEvictionRunsMillis,执行validationQuery检测连接是否有效。
    testWhileIdle: true
#    申请连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能
    testOnBorrow: false
#    归还连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能
    testOnReturn: false
#    是否缓存preparedStatement,也就是PSCache。PSCache对支持游标的数据库性能提升巨大,比如说oracle。在mysql下建议关闭。
    poolPreparedStatements: false
    maxPoolPreparedStatementPerConnectionSize: 20
#    配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
    filters: stat,wall,slf4j
#    合并多个DruidDataSource的监控数据
    useGlobalDataSourceStat: true
#    通过connectProperties属性来打开mergeSql功能;慢SQL记录
    connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000

3. 配置config:

上面 数据源其他配置 里的属性在spring.datasource中是没有的,默认不生效。
这些属性放在spring.datasource下,所以需要把Druid的数据源添加到容器中,前缀为spring.datasource 。

另外,配置Druid监控。

1)配置一个管理后台的servlet

2)  配置一个web监控的filter

@Configuration
public class DruidConfig {

//把DruidDataSource添加到ioc容器中,并且prefix = "spring.datasource",让application.yml里的数据源其他配置属性生效
    @Bean
    @ConfigurationProperties(prefix = "spring.datasource")
    public DataSource druid() {
        return new DruidDataSource();
    }

    //配置druid监控
    
    //1.配置一个管理后台的servlet
    @Bean
    public ServletRegistrationBean statviewServlet() {
        ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new StatViewServlet(), "/druid/*");
        Map map = new HashMap<>();
        //用户名
        map.put("loginUsername", "admin");
        //密码
        map.put("loginPassword", "123456");
        //IP白名单(没有配置或者为空,则允许所有访问)
        map.put("allow", "");
        //IP黑名单(存在共同时,deny优先于allow)
        map.put("deny", "192.168.15.109");
        servletRegistrationBean.setInitParameters(map);
        return servletRegistrationBean;
    }


    //2.配置一个web监控的filter
    @Bean
    public FilterRegistrationBean webstatFilter() {
        FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(new WebStatFilter());
        Map map = new HashMap<>();
        map.put("exclusions", "*.js,*.css,/druid/*");
        filterRegistrationBean.setInitParameters(map);
        filterRegistrationBean.setUrlPatterns(Arrays.asList("/*"));
        return filterRegistrationBean;

    }

}

4. 应用运行起来,浏览器输入:http://localhost:8080/druid,来到登陆页面。输入上面设置的用户名(admin)和密码(123456),

即可来到监控页面。

idea下SpringBoot2.0x整合Druid数据源以及Druid监控_第1张图片

idea下SpringBoot2.0x整合Druid数据源以及Druid监控_第2张图片

 

你可能感兴趣的:(druid,springboot)