springboot整合篇css
前言
對於數據訪問層,不管是Sql仍是NoSql,SpringBoot默認採用整合SpringData的方式進行統一管理,添加大量的自動配置,屏蔽了不少設置。引入了各類XxxTemplate和XxxRepository來簡化咱們隊數據訪問層的操做。java
springboot2.0默認是用com.zaxxer.hikari.HikariDataSource做爲數據源。mysql
2.0如下默認採用的是org.apache.tomcat.jdbc.pool.DataSource做爲數據源。git
Hikari的官方網站:http://brettwooldridge.github.io/HikariCP/github
Hikari號稱JAVA領域中最快的數據鏈接池,你可去點鏈接進去看看,第一行就是說他本身多麼厲害,秒殺什麼什麼的,不過再快我也以爲沒有阿里巴巴奉獻給apache的Druid好,由於阿里巴巴的服務周到,裏面有監控中心,能夠幫助咱們快速定位慢sql等。spring
Druid官方網站:http://druid.io/sql
爲何HikariCP被號稱爲性能最好的Java數據庫鏈接池,如何配置使用參考這篇博客:點擊數據庫
注意事項:默認狀況下使用com.zaxxer.hikari.HikariDataSource獲取數據源時會拋出一個異常。說時區不對,須要咱們修改mysql的時區:apache
SHOW VARIABLES LIKE '%time_zone%'
SET GLOBAL time_zone="+8:00"
使用Druid數據源
Apache Druid(Incubating) - 面向列的分佈式數據存儲,很是適合爲交互式應用程序提供動力tomcat
雖然HikariDataSource性能很是高,可是阿里的druid數據源配有成套的數據源管理軟件,開發中使用的更多。
以往咱們都是直接引入Druid的依賴:
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.12</version>
</dependency>
可是面對這麼火爆的springboot並無直接對Druid的啓動器而是須要咱們本身整合,apache中4個月前已經出了一套完美支持springboot的方案因此說咱們不使用上面的依賴而是使用:
×××:https://github.com/alibaba/druid/tree/master/druid-spring-boot-starter
<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: 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")br/>@Bean
public DruidDataSource druidDataSource(){
return new DruidDataSource();
}
Druid的最強大之處在於它有着強大的監控,能夠監控咱們發送到數據庫的全部sql語句。方便咱們後期排插錯誤。
咱們接着在DruidDataSource裏面配置監控中心:
/**
@author SimpleWubr/>*/
@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;
}
/**
http://localhost:8080/druid/ 就能夠來到咱們的登陸頁面面就是咱們上面添加的控制檯管理用戶,咱們能夠在上面很好的看到運行情況,圖片就不貼了截圖挺麻煩的。
感謝您的閱讀,若是您以爲閱讀本文對您有幫助,請點一下「推薦」按鈕。本文歡迎各位轉載,可是轉載文章以後必須在文章頁面中給出做者和原文鏈接。學習是永無止境的。