<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
前言:今年是我的第二個 1024 了 ,和我一起大聲說出來,技術宅改變世界!!!
本節主要介紹的是:SpringBoot 整合阿里 Druid 資料來源手動設定方法
編寫資料來源設定類 MyDataSourseConfig.class,並在容器中註冊 DruidDataSource 資料來源。
程式碼範例如下:
@Configuration public class MyDataSourseConfig { @Bean @ConfigurationProperties("spring.datasource") // 屬性與組態檔繫結 public DataSource dataSource(){ return new DruidDataSource(); } }
方法一(不推薦): 直接在設定類中通過為自定義的 DruidDataSource 元件 通過 set 設定各種屬性,來實現資料來源的設定。
程式碼範例如下:
@Configuration public class MyDataSourseConfig { @Bean public DataSource dataSource(){ DruidDataSource druidDataSource = new DruidDataSource(); druidDataSource.setUrl("jdbc:mysql://localhost:3306/practice"); // 設定資料來源連線 url // ..... 設定其他屬性 ..... return druidDataSource; } }
這種方法當修養屬性值時,需要大量修改原始碼,因此不推薦。
方法二(推薦):通過 @ConfigurationProperties(“spring.datasource”) 註釋將元件與組態檔中的 spring.datasource 項繫結,這樣在修改自定義資料來源屬性時,直接在 application.yaml 檔案的 spring.datasource 設定項下修改即可。程式碼範例如下:
spring: datasource: url: jdbc:mysql://localhost:3306/practice username: root password: 5201314love driver-class-name: com.mysql.jdbc.Driver
可通過自定義資料來源元件註冊到容器中修改預設資料來源原理:
在 DataSourceAutoConfiguration.class 資料來源自動設定類中,有如下設定。其表示容器中沒有資料來源,才自動設定 Hikari 資料來源。若有資料來源則使用容器中的資料來源。
在容器中放一 Servlet ,具體操作方法為在 Druid資料來源 設定類中註冊一ServletRegistrationBean 元件到容器,ServletRegistrationBean 的Servlet 型別為 StatViewServlet 。程式碼範例如下:
注意點:存取的 url 為 "/druid/*"
,是一個 *
而不是雙 **
@Configuration public class MyDataSourseConfig { @Bean @ConfigurationProperties("spring.datasource") public DataSource dataSource(){ return new DruidDataSource(); } // 設定 druid 監控頁功能 —— 在容器中放一 Servlet @Bean public ServletRegistrationBean statViewServlet(){ StatViewServlet statViewServlet = new StatViewServlet(); ServletRegistrationBean<StatViewServlet> registrationBean = new ServletRegistrationBean<StatViewServlet>(statViewServlet, "/druid/*"); return registrationBean; } }
只是開啟了監控頁功能並不能讓我們使用 Druid 為我們提供的 SQL 監控等功能。還需要為資料來源設定 StatFilter,具體方法是通過 setFilters(“stat”) 方法設定。程式碼如下:
@Bean @ConfigurationProperties("spring.datasource") public DataSource dataSource() throws SQLException { DruidDataSource druidDataSource = new DruidDataSource(); // 加入監控功能 —— setFilters("stat"); druidDataSource.setFilters("stat"); return druidDataSource; }
這時我們再去存取資料庫,可以發現SQL監控功能可用了
在容器中註冊一 WebStatFilter ,通過 setUrlPatterns(Arrays.asList(“/*”) 設定監控的請求為 /** 請求。具體程式碼實現如下:
// 採集 web-jdbc 關聯監控的資料 @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; }
在資料來源中通過 setFilter(“wall”) 加入 防火牆設定 (setFilter 多個值用逗號隔開)
// 加入監控功能 druidDataSource.setFilters("stat, wall");
小優化:
所有通過 setXXXX() 設定資料來源的,都可以在組態檔中寫,因為 druidDataSource 已經繫結了 spring.datasource 設定項
例如:
druidDataSource.setFilters("stat, wall");
可優化為:
spring: datasource: # ... 此處省略一堆其他設定.... filters: stat,wall
在 ServletRegistrationBean 中通過 addInitParameter 加入賬號密碼的設定
// 設定 druid 監控頁功能 —— 在容器中放一 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; }
到此這篇關於SpringBoot整合阿里 Druid 資料來源的文章就介紹到這了,更多相關SpringBoot整合Druid 資料來源內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45