springboot整合篇

前言對於數據訪問層,無論是Sql還是NoSql,SpringBoot默認採用整合SpringData的方式進行統一管理,添加大量的自動配置,屏蔽了很多設置。引入了各種XxxTemplate和XxxRepository來簡化我們隊數據訪問層的操作。

springboot2.0默認是用com.zaxxer.hikari.HikariDataSource作為數據源。

2.0以下默認採用的是org.apache.tomcat.jdbc.pool.DataSource作為數據源。Hikari的官方網站:brettwooldridge.github.ioHikari號稱JAVA領域中最快的數據連接池,你可去點連接進去看看,第一行就是說他自己多麼厲害,秒殺什麼什麼的,不過再快我也覺得沒有阿里巴巴奉獻給apache的Druid好,因為阿里巴巴的服務周到,裡面有監控中心,可以幫助我們快速定位慢sql等。

Druid官方網站:druid.io/

為什麼HikariCP被號稱為性能最好的Java資料庫連接池,如何配置使用參考這篇博客:點擊注意事項:默認情況下使用com.zaxxer.hikari.HikariDataSource獲取數據源時會拋出一個異常。說時區不對,需要我們修改mysql的時區:SHOW VARIABLES LIKE %time_zone% SET GLOBAL time_zone="+8:00"使用Druid數據源

Apache Druid(Incubating) - 面向列的分散式數據存儲,非常適合為互動式應用程序提供動力

雖然HikariDataSource性能非常高,但是阿里的druid數據源配有成套的數據源管理軟體,開發中使用的更多。以往我們都是直接引入Druid的依賴:<dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.1.12</version> </dependency>但是面對這麼火爆的springboot並沒有直接對Druid的啟動器而是需要我們自己整合,apache中4個月前已經出了一套完美支持springboot的方案所以說我們不使用上面的依賴而是使用:

源碼下載:github.com/alibaba/drui

<dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>1.1.10</version> </dependency>配置YML文件,具體的參數配置可以去官網看看:spring: datasource: # 數據源基本配置 username: root password: root driver-class-name: com.mysql.jdbc.Driver url: jdbc:mysql://localhost:3306/duid type: com.alibaba.druid.pool.DruidDataSource # 數據源其他配置 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 maxPoolPreparedStatementPerConnectionSize: 20 useGlobalDataSourceStat: true connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500

雖然我們配置了druid連接池的其它屬性,但是不會生效。因為默認是使用的java.sql.Datasource的類來獲取屬性的,有些屬性datasource沒有。如果我們想讓配置生效,需要手動創建Druid的配置文件。

@ConfigurationProperties(prefix = "spring.datasource") @Bean public DruidDataSource druidDataSource(){ return new DruidDataSource(); }Druid的最強大之處在於它有著強大的監控,可以監控我們發送到資料庫的所有sql語句。方便我們後期排插錯誤。我們接著在DruidDataSource裡面配置監控中心:/** * 配置監控伺服器 * @return 返回監控註冊的servlet對象 * @author SimpleWu */ @Bean public ServletRegistrationBean statViewServlet() { ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new StatViewServlet(), "/druid/*"); // 添加IP白名單 servletRegistrationBean.addInitParameter("allow", "127.0.0.1"); // 添加IP黑名單,當白名單和黑名單重複時,黑名單優先順序更高 servletRegistrationBean.addInitParameter("deny", "127.0.0.1"); // 添加控制檯管理用戶 servletRegistrationBean.addInitParameter("loginUsername", "SimpleWu"); servletRegistrationBean.addInitParameter("loginPassword", "123456"); // 是否能夠重置數據 servletRegistrationBean.addInitParameter("resetEnable", "false"); return servletRegistrationBean; } /** * 配置服務過濾器 * * @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; }配置完後我們啟動springboot程序訪問:http://localhost:8080/druid/ 就可以來到我們的登錄頁面面就是我們上面添加的控制檯管理用戶,我們可以在上面很好的看到運行狀況,圖片就不貼了截圖挺麻煩的。

感謝您的閱讀,如果您覺得閱讀本文對您有幫助,請點一下「推薦」按鈕。本文歡迎各位轉載,但是轉載文章之後必須在文章頁面中給出作者和原文連接

學習是永無止境的。


推薦閱讀:
相關文章