【Java】Springboot集成Druid


  Springboot集成Druid方案:一個是在POM中直接配置druid-spring-boot-starter,不用寫任何代碼;一個是配置druid,寫幾行代碼,可以加入;在方案一基礎上加入stat、wall后進行驗證登錄。

  測試環境是:SpringBoot2.1.4.RELEASE。

一、直接使用druid-spring-boot-starter

1、POM配置

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.1.10</version>
        </dependency>
        <!--自啟動Druid管理后台-->
                <dependency>
                    <groupId>com.alibaba</groupId>
                    <artifactId>druid-spring-boot-starter</artifactId>
                    <version>1.1.10</version>
                </dependency>

2、application.properties配置

### db config ###
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.driverClassName=org.postgresql.Driver
spring.datasource.url=jdbc:postgresql://localhost:5432/XXX?useUnicode=true&characterEncoding=utf8&currentSchema=public
spring.datasource.username=postgres
spring.datasource.password=XXX
spring.jpa.properties.hibernate.jdbc.lob.non_contextual_creation=true
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect
spring.jpa.properties.hibernate.hbm2ddl.auto=update
#config druid
#連接池的設置
#初始化時建立物理連接的個數
spring.datasource.druid.initial-size=5
#最小連接池數量
spring.datasource.druid.min-idle=5
#最大連接池數量 maxIdle已經不再使用
spring.datasource.druid.max-active=20
#獲取連接時最大等待時間,單位毫秒
spring.datasource.druid.max-wait=60000
#申請連接的時候檢測,如果空閑時間大於timeBetweenEvictionRunsMillis,執行validationQuery檢測連接是否有效。
spring.datasource.druid.test-while-idle=true
#既作為檢測的間隔時間又作為testWhileIdel執行的依據
spring.datasource.druid.time-between-eviction-runs-millis=60000
#銷毀線程時檢測當前連接的最后活動時間和當前時間差大於該值時,關閉當前連接
spring.datasource.druid.min-evictable-idle-time-millis=30000
#用來檢測連接是否有效的sql 必須是一個查詢語句
#mysql中為 select 'x'
#oracle中為 select 1 from dual
spring.datasource.druid.validation-query=select 'x'
#申請連接時會執行validationQuery檢測連接是否有效,開啟會降低性能,默認為true
spring.datasource.druid.test-on-borrow=false
#歸還連接時會執行validationQuery檢測連接是否有效,開啟會降低性能,默認為true
spring.datasource.druid.test-on-return=false
#當數據庫拋出不可恢復的異常時,拋棄該連接
spring.datasource.druid.exception-sorter=true
#是否緩存preparedStatement,mysql5.5+建議開啟
#spring.datasource.druid.pool-prepared-statements=true
#當值大於0時poolPreparedStatements會自動修改為true
spring.datasource.druid.max-pool-prepared-statement-per-connection-size=20
#配置擴展插件
spring.datasource.druid.filters=stat,wall
#通過connectProperties屬性來打開mergeSql功能;慢SQL記錄
spring.datasource.druid.connection-properties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500
#合並多個DruidDataSource的監控數據
spring.datasource.druid.use-global-data-source-stat=true
#設置訪問druid監控頁的賬號和密碼,默認沒有
#spring.datasource.druid.stat-view-servlet.login-username=admin
#spring.datasource.druid.stat-view-servlet.login-password=admin

### mybatis config ###
mybatis.config-locations=classpath:mybatis/mybatis-config.xml
mybatis.mapper-locations=classpath:mybatis/mapper/*.xml
mybatis.type-aliases-package=com.jrsc.supervisor.model
### log config ###
logging.config=classpath:logback-spring.xml

3、輸入http://localhost:9091/druid/webapp.html后,即可看到Druid監控面板

PS:廣告無處不在

 

二、使用代碼,可驗證登錄的方案

1、POM配置,刪除:druid-spring-boot-starter

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.1.10</version>
        </dependency>
        <!--自啟動Druid管理后台-->
        <!--        <dependency>-->
        <!--            <groupId>com.alibaba</groupId>-->
        <!--            <artifactId>druid-spring-boot-starter</artifactId>-->
        <!--            <version>1.1.10</version>-->
        <!--        </dependency>-->

2、application.properties配置不變

3、新建一個類:DruidConfig,注意包的引入,特別是:

package com.jrsc.supervisor.druid;

import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.support.http.StatViewServlet; import com.alibaba.druid.support.http.WebStatFilter;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import javax.sql.DataSource;

3、DruidConfig具體實現如下:

@Configuration
public class DruidConfig {

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

    @Bean
    public ServletRegistrationBean druidStatViewServlet() {
        //ServletRegistrationBean提供類的進行注冊
        ServletRegistrationBean servletRegistrationBean =
                new ServletRegistrationBean(new StatViewServlet(), "/druid/*");
        //添加初始化參數:initParams
        //白名單:
        servletRegistrationBean.addInitParameter("allow", "127.0.0.1");
        //IP黑名單(同時存在時,deny優先於allow)
        //如果滿足deny,就提示:sorry,you are not permitted to view this page
        servletRegistrationBean.addInitParameter("deny", "192.168.1.73");
        //登錄查看信息的賬號和密碼
        servletRegistrationBean.addInitParameter("loginUsername", "admin");
        servletRegistrationBean.addInitParameter("loginPassword", "123456");
        servletRegistrationBean.addInitParameter("resetEnable", "false");
        return servletRegistrationBean;
    }


    @Bean
    public FilterRegistrationBean druidStatFilter() {
        FilterRegistrationBean filterRegistrationBean =
                new FilterRegistrationBean(new WebStatFilter());
        //添加過濾規則
        filterRegistrationBean.addUrlPatterns("/*");
        //添加需要忽略的格式信息
        filterRegistrationBean.addInitParameter("exclusions", "*.js,*.gif," +
                "*.jpg,*.png, *.css,*.ico,/druid/*");
        return filterRegistrationBean;

    }

4、對於SpringBoot的啟動類,加入注解:@ServletComponentScan

5、輸入:http://localhost:9091/druid/sql.html,觀察Druid監控面板

三、通過在方案一基礎上加入如下代碼,實現驗證登錄

#設置訪問druid監控頁的賬號和密碼,默認沒有
## Druid WebStatFilter配置,說明請參考Druid Wiki,配置_配置WebStatFilter
spring.datasource.druid.web-stat-filter.enabled=true
spring.datasource.druid.web-stat-filter.url-pattern=/*
spring.datasource.druid.web-stat-filter.exclusions=*.gif,*.png,*.jpg,*.html,*.js,*.css,*.ico,/druid/*
# Druid StatViewServlet配置,說明請參考Druid Wiki,配置_StatViewServlet配置
spring.datasource.druid.stat-view-servlet.enabled=true
spring.datasource.druid.stat-view-servlet.url-pattern=/druid/*
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=123456
spring.datasource.druid.stat-view-servlet.allow=
spring.datasource.druid.stat-view-servlet.deny=

四、測試

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM