springboot+druid連接池及監控配置


1. 問題描述

阿里巴巴的數據庫連接池Druid在效率與穩定性都很高,被很多開發團隊使用,並且自帶的Druid監控也很好用,本章簡單介紹下springboot+druid配置連接池及監控。

2. 解決方案

2.1 pom.xml

springboot 已經有druid的starter,但是好像有點問題,不知道為什么沒拿到jar包,有可能是網絡問題,還是使用了原生的druid gav。

      <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.0.26</version>
        </dependency>
        
      <!--starter有點問題,沒用-->
       <!-- <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>1.1.10</version>
        </dependency>-->

2.2 連接池配置

連接池配置沒啥說的,我們當時為了省事,直接將以前項目中的xml導過來了(在application啟動上加個標簽就好了)

    <!-- datasource configuration -->
    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">
        <property name="url" value="${jdbc.url}"/>
        <property name="username" value="${jdbc.username}"/>
        <property name="password" value="${jdbc.password}"/>

        <property name="maxActive" value="${spring.datasource.maxActive}" />
        <property name="initialSize" value="${spring.datasource.initialSize}" />
        <property name="maxWait" value="${spring.datasource.maxWait}" />
        <property name="minIdle" value="${spring.datasource.minIdle}" />
        <property name="timeBetweenEvictionRunsMillis" value="${spring.datasource.timeBetweenEvictionRunsMillis}" />
        <property name="minEvictableIdleTimeMillis" value="${spring.datasource.minEvictableIdleTimeMillis}" />
        <property name="testWhileIdle" value="${spring.datasource.testWhileIdle}" />
        <property name="testOnBorrow" value="${spring.datasource.testOnBorrow}" />
        <property name="testOnReturn" value="${spring.datasource.testOnReturn}" />
        <property name="poolPreparedStatements" value="${spring.datasource.poolPreparedStatements}" />
        <property name="maxPoolPreparedStatementPerConnectionSize" value="${spring.datasource.maxPoolPreparedStatementPerConnectionSize}" />
        <property name="filters" value="${spring.datasource.filters}"  />
        <property name="connectionProperties" value="${spring.datasource.connectionProperties}"  />
    </bean>

2.3 監控配置

默認繼承了一個filter,一個Servlet,使用了兩個標簽。

2.3.1 filter類
@WebFilter(filterName = "druidWebStatFilter", urlPatterns = "/*",
        initParams = {
                @WebInitParam(name = "exclusions", value = "*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico,/druid/*")
        }
)
public class DruidStatFilter extends WebStatFilter {

}
2.3.2 servlet類
@WebServlet(urlPatterns = "/druid/*",
        initParams = {
                @WebInitParam(name = "loginUsername", value = "laowang"),// 用戶名
                @WebInitParam(name = "loginPassword", value = "lw123"),// 密碼
                @WebInitParam(name = "resetEnable", value = "false")// 禁用HTML頁面上的“Reset All”功能
        }
)
public class DruidStatViewServlet extends StatViewServlet {
    private static final long serialVersionUID = 1L;
}

2.3.3 啟動類上增加標簽
@ServletComponentScan
@SpringBootApplication
public class SptestApplication {

    public static void main(String[] args) {
        SpringApplication.run(SptestApplication.class, args);
    }

}

ok,配置完了。

2.4 訪問界面

2.4.1 訪問首頁

地址:http://192.168.0.10:9107/druid/login.html

2.4.2 SQL監控

可以監控具體執行的sql,時間行數等,用於分析慢SQL,優化響應時間。

2.4.3 URI監控

可以看到接口的執行時間及訪問次數,為系統優化提供參考。



免責聲明!

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



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