SpringBoot整合druid

Druid是Alibaba開(kāi)源的的數(shù)據(jù)庫(kù)連接池。Druid能夠提供強(qiáng)大的監(jiān)控功能,比如sql監(jiān)控、URI監(jiān)控、Session監(jiān)控等,在功能、性能、擴(kuò)展性方面都超過(guò)其他例如DBCP、C3P0等連接池,而且Druid是一個(gè)開(kāi)源項(xiàng)目,源碼托管在github上,地址是 https://github.com/alibaba/druid

配置

打開(kāi)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>
        <!--導(dǎo)入德魯伊-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.1.16</version>
        </dependency>

        <!--導(dǎo)入log4j,因?yàn)閐riud添加的拓展插件為log4j-->
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>

修改配置文件application.yml

========================
#數(shù)據(jù)源基本配置
spring:
  datasource:
    username: root
    password: root
    driver-class-name: com.mysql.jdbc.Driver# 時(shí)區(qū)配置錯(cuò)誤就添加 serverTimezone = UTC
    url: jdbc:mysql://localhost:3306/mybatis?serverTimezone=UTC
    #druid增加的配置
    type: com.alibaba.druid.pool.DruidDataSource
=========================以下配置酌情處理===========
    # 初始化連接池個(gè)數(shù)
    initialSize: 5
    # 最小連接池個(gè)數(shù)
    minIdle: 5
    # 最大連接池個(gè)數(shù)
    max-active: 20
    # 配置獲取連接等待超時(shí)的時(shí)間
    maxWait: 60000
    # 配置間隔多久才進(jìn)行一次檢測(cè)
    timeBetweenEvictionRunsMillis: 60000
    # 最小生存的時(shí)間
    minEvictableIdleTimeMillis: 300000
    # 用來(lái)檢測(cè)連接是否有效的sql,要求是一個(gè)查詢語(yǔ)句。
    # 如果validationQuery為null,testOnBorrow、testOnReturn、testWhileIdle都不會(huì)起作用
    validationQuery: SELECT 1 FROM DUAL
    # 建議配置為true,不影響性能,并且保證安全性。
    # 申請(qǐng)連接的時(shí)候檢測(cè),如果空閑時(shí)間大于timeBetweenEvictionRunsMillis,執(zhí)行validationQuery檢測(cè)連接是否有效。
    testWhileIdle: true
    # 申請(qǐng)連接時(shí)執(zhí)行validationQuery檢測(cè)連接是否有效,做了這個(gè)配置會(huì)降低性能
    testOnBorrow: false
    # 歸還連接時(shí)執(zhí)行validationQuery檢測(cè)連接是否有效,做了這個(gè)配置會(huì)降低性能
    testOnReturn: false
    # 打開(kāi)PSCache,并且指定每個(gè)連接上PSCache的大小
    poolPreparedStatements: true
    maxPoolPreparedStatementPerConnectionSize: 20
    # 通過(guò)別名的方式配置擴(kuò)展插件,多個(gè)英文逗號(hào)分隔,常用的插件有:
    # 監(jiān)控統(tǒng)計(jì)用的filter:stat
    # 日志用的filter:log4j
    # 防御sql注入的filter:wall
    filters: stat,wall,log4j
    # 通過(guò)connectProperties屬性來(lái)打開(kāi)mergeSql功能;慢SQL記錄
    connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
    # 合并多個(gè)DruidDataSource的監(jiān)控?cái)?shù)據(jù)
    useGlobalDataSourceStat: true

添加配置類DruidConfig

@Configuration
public class DruidConfig {

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

    //配置Druid的監(jiān)控 現(xiàn)在可以在application.yml配置文件中配置了
    @Bean
    public ServletRegistrationBean statViewServlet() {
        ServletRegistrationBean bean = new ServletRegistrationBean<>(new StatViewServlet(), "/druid/*");

        Map<String, String> initMap = new HashMap<>();
//設(shè)置賬號(hào)密碼
        initMap.put("loginUsername", "admin");
        initMap.put("loginPassword", "123456");
        initMap.put("allow", "");//默認(rèn)允許所有地址訪問(wèn)
//      initMap.put("deny", "192.168.3.22"); 拒絕地址訪問(wèn)
        bean.setInitParameters(initMap);
        return bean;
    }

    //配置web監(jiān)控的  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;
    }
}

啟動(dòng)項(xiàng)目,瀏覽器輸入localhost:8080/druid,輸入用戶名和密碼為admin,123456進(jìn)入訪問(wèn)頁(yè)面成功

至此就能在圖形化界面查看SQL監(jiān)控,數(shù)據(jù)源等功能

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容