美文网首页
SpringBoot整合druid

SpringBoot整合druid

作者: CodePandaes | 来源:发表于2020-03-09 17:04 被阅读0次

    Druid是Alibaba开源的的数据库连接池。Druid能够提供强大的监控功能,比如sql监控、URI监控、Session监控等,在功能、性能、扩展性方面都超过其他例如DBCP、C3P0等连接池,而且Druid是一个开源项目,源码托管在github上,地址是 https://github.com/alibaba/druid

    配置

    打开pom.xml引入依赖,可在https://mvnrepository.com/tags/maven搜索druid下载,建议下载alibaba提供的

            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
            <!--引入mysql-->
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
            </dependency>
            <!--导入德鲁伊-->
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>druid</artifactId>
                <version>1.1.16</version>
            </dependency>
    
            <!--导入log4j,因为driud添加的拓展插件为log4j-->
            <dependency>
                <groupId>log4j</groupId>
                <artifactId>log4j</artifactId>
                <version>1.2.17</version>
            </dependency>
    

    修改配置文件application.yml

    ========================
    #数据源基本配置
    spring:
      datasource:
        username: root
        password: root
        driver-class-name: com.mysql.jdbc.Driver# 时区配置错误就添加 serverTimezone = UTC
        url: jdbc:mysql://localhost:3306/mybatis?serverTimezone=UTC
        #druid增加的配置
        type: com.alibaba.druid.pool.DruidDataSource
    =========================以下配置酌情处理===========
        # 初始化连接池个数
        initialSize: 5
        # 最小连接池个数
        minIdle: 5
        # 最大连接池个数
        max-active: 20
        # 配置获取连接等待超时的时间
        maxWait: 60000
        # 配置间隔多久才进行一次检测
        timeBetweenEvictionRunsMillis: 60000
        # 最小生存的时间
        minEvictableIdleTimeMillis: 300000
        # 用来检测连接是否有效的sql,要求是一个查询语句。
        # 如果validationQuery为null,testOnBorrow、testOnReturn、testWhileIdle都不会起作用
        validationQuery: SELECT 1 FROM DUAL
        # 建议配置为true,不影响性能,并且保证安全性。
        # 申请连接的时候检测,如果空闲时间大于timeBetweenEvictionRunsMillis,执行validationQuery检测连接是否有效。
        testWhileIdle: true
        # 申请连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能
        testOnBorrow: false
        # 归还连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能
        testOnReturn: false
        # 打开PSCache,并且指定每个连接上PSCache的大小
        poolPreparedStatements: true
        maxPoolPreparedStatementPerConnectionSize: 20
        # 通过别名的方式配置扩展插件,多个英文逗号分隔,常用的插件有:
        # 监控统计用的filter:stat
        # 日志用的filter:log4j
        # 防御sql注入的filter:wall
        filters: stat,wall,log4j
        # 通过connectProperties属性来打开mergeSql功能;慢SQL记录
        connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
        # 合并多个DruidDataSource的监控数据
        useGlobalDataSourceStat: true
    

    添加配置类DruidConfig

    @Configuration
    public class DruidConfig {
    
        @ConfigurationProperties(prefix = "spring.datasource")
        @Bean
        public DataSource druid() {
            return new DruidDataSource();
        }
    
        //配置Druid的监控 现在可以在application.yml配置文件中配置了
        @Bean
        public ServletRegistrationBean statViewServlet() {
            ServletRegistrationBean bean = new ServletRegistrationBean<>(new StatViewServlet(), "/druid/*");
    
            Map<String, String> initMap = new HashMap<>();
    //设置账号密码
            initMap.put("loginUsername", "admin");
            initMap.put("loginPassword", "123456");
            initMap.put("allow", "");//默认允许所有地址访问
    //      initMap.put("deny", "192.168.3.22"); 拒绝地址访问
            bean.setInitParameters(initMap);
            return bean;
        }
    
        //配置web监控的  filter
        @Bean
        public FilterRegistrationBean webStatFilter() {
            FilterRegistrationBean bean = new FilterRegistrationBean();
            bean.setFilter(new WebStatFilter());
            Map<String, String> initMap = new HashMap<>();
            //排除js脚本文件,css样式
            initMap.put("exclusions", "*.js,*.css,/druid/*");
            bean.setInitParameters(initMap);
            bean.setUrlPatterns(Arrays.asList("/*"));
            return bean;
        }
    }
    
    

    启动项目,浏览器输入localhost:8080/druid,输入用户名和密码为admin,123456进入访问页面成功

    至此就能在图形化界面查看SQL监控,数据源等功能

    相关文章

      网友评论

          本文标题:SpringBoot整合druid

          本文链接:https://www.haomeiwen.com/subject/tqtpdhtx.html