Spring Boot 整合 druid

程序員社區 2022-01-07 13:43:21 阅读数:288

spring boot 整合 druid

       
SpringBoot 在1.x版本中, 使用的默認是 Tomcat 的 DataSource 數據源(org.apache.tomcat.jdbc.pool.DataSource);在SpringBoot 在2.x版本中更換為了 HikariDataSource數據源。Spring Boot 默認支持以下三種數據源:
org.apache.tomcat.jdbc.pool.DataSource
HikariDataSource
BasicDataSource,但是我們在工作中經常用到的數據源是
阿裏出品的
druid

        雖然 HikariCP 的性能會比 druid 高一些,但是 druid 能為我們提供全套關於數據源相關的監控、安全解决方案。所以我們在開發中使用 druid 數據源也比較多,接下來我們就介紹 Spring Boot 如何整合 druid 數據源。

1.添加 Maven 依賴

<dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>1.1.21</version></dependency>

2.配置數據源信息

spring: datasource: username: root password: root url: jdbc:mysql://192.168.204.211:3306/jdbc?useSSL=false driver-class-name: com.mysql.jdbc.Driver type: com.alibaba.druid.pool.DruidDataSource druid: # 數據源其他配置 initialSize: 5 minIdle: 5 maxActive: 20 maxWait: 60000 timeBetweenEvictionRunsMillis: 60000 minEvictableIdleTimeMillis: 300000 validationQuery: SELECT 1 FROM DUAL testWhileIdle: true testOnBorrow: false testOnReturn: false poolPreparedStatements: true # 配置監控統計攔截的filters,去掉後監控界面sql無法統計,'wall'用於防火牆 filters: stat,wall,log4j maxPoolPreparedStatementPerConnectionSize: 20 useGlobalDataSourceStat: true connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500

3.添加一個 druid 數據源配置類

import com.alibaba.druid.support.http.StatViewServlet;import com.alibaba.druid.support.http.WebStatFilter;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;/** * TODO Druid數據源配置信息 * * @author liuzebiao * @Date 2020-4-3 18:30 */@Configurationpublic class DruidConfig {
 //配置 Druid 的監控 /** * 1.配置一個管理後臺的Servlet */ @Bean public ServletRegistrationBean startViewServlet(){
 ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new StatViewServlet(),"/druid/*"); // IP白名單 servletRegistrationBean.addInitParameter("allow","192.168.41.112"); // IP黑名單(共同存在時,deny優先於allow) servletRegistrationBean.addInitParameter("deny","192.168.41.126"); // 控制臺管理用戶 servletRegistrationBean.addInitParameter("loginUsername","admin"); servletRegistrationBean.addInitParameter("loginPassword","123456"); // 是否能够重置數據 servletRegistrationBean.addInitParameter("resetEnable","false"); return servletRegistrationBean; } /** * 2.配置一個 Web 監控的 Filter * @return */ @Bean public FilterRegistrationBean statFilter(){
 FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(new WebStatFilter()); //添加過濾規則 filterRegistrationBean.addUrlPatterns("/*"); //忽略過濾的格式 filterRegistrationBean.addInitParameter("exclusions","*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*"); return filterRegistrationBean; }}

4.測試數據源是否切換成功

import org.junit.Test;import org.junit.runner.RunWith;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.boot.test.context.SpringBootTest;import org.springframework.test.context.junit4.SpringRunner;import javax.sql.DataSource;import java.sql.SQLException;@RunWith(SpringRunner.class)@SpringBootTestpublic class DruidDataSurceApplicationTests {
 @Autowired DataSource dataSource; @Test public void contextLoads() throws SQLException {
 System.out.println(dataSource.getClass()); }}

在這裏插入圖片描述

5.測試 druid 監控是否OK

       訪問鏈接:http://loclahost:8080/durid,輸入自己設置的用戶名、密碼即可正確進入 druid 為我們提供的監控平臺,我們就可以對 數據源、SQL、URI、Session、Spring 、防火牆等進行監控。比如我們常用的 慢SQL監控 druid 就可以幫我們搞定,不過我們還需要配置其他一些內容,此處不再過多介紹。關於 druid 在監控方面的配置,你可以參考博主的這篇文章:開啟druid監控、慢sql記錄、Spring監控,不過是 xml 格式配置,你可以觸類旁通一下哈,謝謝。
在這裏插入圖片描述

6. 測試 druid 監控

       現在就來編寫一個 Controller,查看一下 druid 監控相關工作。

@RestControllerpublic class TestController {
 @Autowired JdbcTemplate jdbcTemplate; @GetMapping("query") public List<Map<String, Object>> queryData(){
 String sql = "select * from student"; List<Map<String, Object>> list = jdbcTemplate.queryForList(sql); return list; }}

       我們可以通過http://localhost:8080/query鏈接來進行數據請求,查看一下 druid 到底為我們監控了哪些內容。Spring監控、SQL防火牆監控等需要配置才能使用。
在這裏插入圖片描述


博主寫作不易,來個關注唄

求關注、求點贊,加個關注不迷路 ヾ(◍°∇°◍)ノ゙

博主不能保證寫的所有知識點都正確,但是能保證純手敲,錯誤也請指出,望輕噴 Thanks*(・ω・)ノ

版权声明:本文为[程序員社區]所创,转载请带上原文链接,感谢。 https://gsmany.com/2022/01/202201071343206875.html