SpringBoot整合阿里?Druid?數(shù)據(jù)源的實(shí)例詳解
前言:今年是我的第二個(gè) 1024 了 ,和我一起大聲說(shuō)出來(lái),技術(shù)宅改變世界?。。?/p>
本節(jié)主要介紹的是:SpringBoot 整合阿里 Druid 數(shù)據(jù)源手動(dòng)配置方法
1. 在容器中注冊(cè) DruidDataSource 數(shù)據(jù)源。
編寫(xiě)數(shù)據(jù)源配置類(lèi) MyDataSourseConfig.class,并在容器中注冊(cè) DruidDataSource 數(shù)據(jù)源。
代碼示例如下:
@Configuration
public class MyDataSourseConfig {
@Bean
@ConfigurationProperties("spring.datasource") // 屬性與配置文件綁定
public DataSource dataSource(){
return new DruidDataSource();
}
}2. Druid 數(shù)據(jù)源各種屬性配置方法
方法一(不推薦): 直接在配置類(lèi)中通過(guò)為自定義的 DruidDataSource 組件 通過(guò) set 設(shè)置各種屬性,來(lái)實(shí)現(xiàn)數(shù)據(jù)源的配置。
代碼示例如下:
@Configuration
public class MyDataSourseConfig {
@Bean
public DataSource dataSource(){
DruidDataSource druidDataSource = new DruidDataSource();
druidDataSource.setUrl("jdbc:mysql://localhost:3306/practice"); // 設(shè)置數(shù)據(jù)源連接 url
// ..... 設(shè)置其他屬性 .....
return druidDataSource;
}
}這種方法當(dāng)修養(yǎng)屬性值時(shí),需要大量修改源代碼,因此不推薦。
方法二(推薦):通過(guò) @ConfigurationProperties(“spring.datasource”) 注釋將組件與配置文件中的 spring.datasource 項(xiàng)綁定,這樣在修改自定義數(shù)據(jù)源屬性時(shí),直接在 application.yaml 文件的 spring.datasource 配置項(xiàng)下修改即可。代碼示例如下:
spring:
datasource:
url: jdbc:mysql://localhost:3306/practice
username: root
password: 5201314love
driver-class-name: com.mysql.jdbc.Driver可通過(guò)自定義數(shù)據(jù)源組件注冊(cè)到容器中修改默認(rèn)數(shù)據(jù)源原理:
在 DataSourceAutoConfiguration.class 數(shù)據(jù)源自動(dòng)配置類(lèi)中,有如下設(shè)置。其表示容器中沒(méi)有數(shù)據(jù)源,才自動(dòng)配置 Hikari 數(shù)據(jù)源。若有數(shù)據(jù)源則使用容器中的數(shù)據(jù)源。

3. 開(kāi)啟Druid的內(nèi)置監(jiān)控頁(yè)面
在容器中放一 Servlet ,具體操作方法為在 Druid數(shù)據(jù)源 配置類(lèi)中注冊(cè)一ServletRegistrationBean 組件到容器,ServletRegistrationBean 的Servlet 類(lèi)型為 StatViewServlet 。代碼示例如下:
注意點(diǎn):訪問(wèn)的 url 為 "/druid/*" ,是一個(gè) * 而不是雙 **
@Configuration
public class MyDataSourseConfig {
@Bean
@ConfigurationProperties("spring.datasource")
public DataSource dataSource(){
return new DruidDataSource();
}
// 配置 druid 監(jiān)控頁(yè)功能 —— 在容器中放一 Servlet
@Bean
public ServletRegistrationBean statViewServlet(){
StatViewServlet statViewServlet = new StatViewServlet();
ServletRegistrationBean<StatViewServlet> registrationBean = new ServletRegistrationBean<StatViewServlet>(statViewServlet, "/druid/*");
return registrationBean;
}
}4. 打開(kāi) Druid 監(jiān)控統(tǒng)計(jì)功能
只是開(kāi)啟了監(jiān)控頁(yè)功能并不能讓我們使用 Druid 為我們提供的 SQL 監(jiān)控等功能。還需要為數(shù)據(jù)源配置 StatFilter,具體方法是通過(guò) setFilters(“stat”) 方法配置。代碼如下:
@Bean
@ConfigurationProperties("spring.datasource")
public DataSource dataSource() throws SQLException {
DruidDataSource druidDataSource = new DruidDataSource();
// 加入監(jiān)控功能 —— setFilters("stat");
druidDataSource.setFilters("stat");
return druidDataSource;
}這時(shí)我們?cè)偃ピL問(wèn)數(shù)據(jù)庫(kù),可以發(fā)現(xiàn)SQL監(jiān)控功能可用了

5. 配置Web和Spring關(guān)聯(lián)監(jiān)控
在容器中注冊(cè)一 WebStatFilter ,通過(guò) setUrlPatterns(Arrays.asList(“/*”) 設(shè)置監(jiān)控的請(qǐng)求為 /** 請(qǐng)求。具體代碼實(shí)現(xiàn)如下:
// 采集 web-jdbc 關(guān)聯(lián)監(jiān)控的數(shù)據(jù)
@Bean
public FilterRegistrationBean webstatFilter(){
WebStatFilter webStatFilter = new WebStatFilter();
FilterRegistrationBean<WebStatFilter> registrationBean = new FilterRegistrationBean<>(webStatFilter);
registrationBean.setUrlPatterns(Arrays.asList("/*"));
registrationBean.addInitParameter("exclusions", "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*");
return registrationBean;
}6. 配置防火墻:
在數(shù)據(jù)源中通過(guò) setFilter(“wall”) 加入 防火墻配置 (setFilter 多個(gè)值用逗號(hào)隔開(kāi))
// 加入監(jiān)控功能
druidDataSource.setFilters("stat, wall");小優(yōu)化:
所有通過(guò) setXXXX() 設(shè)置數(shù)據(jù)源的,都可以在配置文件中寫(xiě),因?yàn)?druidDataSource 已經(jīng)綁定了 spring.datasource 配置項(xiàng)
例如:
druidDataSource.setFilters("stat, wall");可優(yōu)化為:
spring:
datasource:
# ... 此處省略一堆其他配置....
filters: stat,wall7. 給監(jiān)控頁(yè)加入賬號(hào)密碼
在 ServletRegistrationBean 中通過(guò) addInitParameter 加入賬號(hào)密碼的設(shè)置
// 配置 druid 監(jiān)控頁(yè)功能 —— 在容器中放一 Servlet
@Bean
public ServletRegistrationBean statViewServlet(){
StatViewServlet statViewServlet = new StatViewServlet();
ServletRegistrationBean<StatViewServlet> registrationBean = new ServletRegistrationBean<StatViewServlet>(statViewServlet, "/druid/*");
registrationBean.addInitParameter("loginUsername", "wanqing");
registrationBean.addInitParameter("loginPassword", "520131");
return registrationBean;
}到此這篇關(guān)于SpringBoot整合阿里 Druid 數(shù)據(jù)源的文章就介紹到這了,更多相關(guān)SpringBoot整合Druid 數(shù)據(jù)源內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
淺談Java實(shí)現(xiàn)回溯算法之八皇后問(wèn)題
八皇后問(wèn)題是一個(gè)古老而又著名的問(wèn)題,是學(xué)習(xí)回溯算法的一個(gè)經(jīng)典案例。今天我們就一起來(lái)探究一下吧2021-06-06
Java基于深度優(yōu)先遍歷的隨機(jī)迷宮生成算法
今天小編就為大家分享一篇關(guān)于Java基于深度優(yōu)先遍歷的隨機(jī)迷宮生成算法,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2019-02-02
SpringCloud Zuul服務(wù)功能與使用方法解析
這篇文章主要介紹了SpringCloud Zuul服務(wù)功能與使用方法解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-05-05
如何通過(guò)源碼了解Java的自動(dòng)裝箱拆箱詳解
裝箱就是把基本類(lèi)型轉(zhuǎn)換成包裝類(lèi),拆箱就是把包裝類(lèi)轉(zhuǎn)換成基本類(lèi)型,下面這篇文章主要給大家介紹了關(guān)于如何通過(guò)源碼了解Java的自動(dòng)裝箱拆箱的相關(guān)資料,需要的朋友可以參考下2022-04-04
Java 實(shí)現(xiàn)Redis存儲(chǔ)復(fù)雜json格式數(shù)據(jù)并返回給前端
這篇文章主要介紹了Java 實(shí)現(xiàn)Redis存儲(chǔ)復(fù)雜json格式數(shù)據(jù)并返回給前端操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-07-07
Spring boot通過(guò)AOP防止API重復(fù)請(qǐng)求代碼實(shí)例
這篇文章主要介紹了Spring boot通過(guò)AOP防止API重復(fù)請(qǐng)求代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-12-12
Java設(shè)計(jì)模式之抽象工廠模式簡(jiǎn)析
這篇文章主要介紹了Java設(shè)計(jì)模式之抽象工廠模式簡(jiǎn)析, 抽象工廠模式是工廠方法模式的升級(jí)版本,他用來(lái)創(chuàng)建一組相關(guān)或者相互依賴(lài)的對(duì)象,他與工廠方法模式的區(qū)別就在于,工廠方法模式針對(duì)的是一個(gè)產(chǎn)品等級(jí)結(jié)構(gòu),需要的朋友可以參考下2023-12-12
使用jekins自動(dòng)構(gòu)建部署java maven項(xiàng)目的方法步驟
這篇文章主要介紹了使用jekins自動(dòng)構(gòu)建部署java maven項(xiàng)目的方法步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01
SpringBoot項(xiàng)目中公共字段填充的實(shí)現(xiàn)
本文主要介紹了SpringBoot項(xiàng)目中公共字段填充的實(shí)現(xiàn),利用SpringBoot的Aop思想和自定義注解和反射機(jī)制的方法來(lái)實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下2023-10-10

