上一篇:spring boot 1.5.4 整合 mybatis(十二)
1 集成druid連接池
spring boot集成druid項目mybatis-spring-boot源碼:
spring-boot相關項目源碼,
碼雲地址:https://git.oschina.net/wyait/springboot1.5.4.git
github地址:https://github.com/wyait/spring-boot-1.5.4.git
1.1 druid簡介
Druid是阿里巴巴開源的一個項目。,整個項目由數據庫連接池、插件框架和SQL解析器組成。該項目主要是爲了擴展JDBC的一些限制,可以讓程序員實現一些特殊的需求,比如向密鑰服務請求憑證、統計SQL信息、SQL性能收集、SQL注入檢查、SQL翻譯等,程序員可以通過定製來實現自己需要的功能。
Druid是一個JDBC組件,它包括三部分:
DruidDriver 代理Driver,能夠提供基於Filter-Chain模式的插件體系。
DruidDataSource 高效可管理的數據庫連接池。
SQLParser
Druid可以做什麼?
1) 可以監控數據庫訪問性能,Druid內置提供了一個功能強大的StatFilter插件,能夠詳細統計SQL的執行性能,這對於線上分析數據庫訪問性能有幫助。
2) 替換DBCP和C3P0。Druid提供了一個高效、功能強大、可擴展性好的數據庫連接池。
3) 數據庫密碼加密。直接把數據庫密碼寫在配置文件中,這是不好的行爲,容易導致安全問題。DruidDruiver和DruidDataSource都支持PasswordCallback。
4) SQL執行日誌,Druid提供了不同的LogFilter,能夠支持Common-Logging、Log4j和JdkLog,你可以按需要選擇相應的LogFilter,監控你應用的數據庫訪問情況。
擴展JDBC,如果你要對JDBC層有編程的需求,可以通過Druid提供的Filter-Chain機制,很方便編寫JDBC層的擴展插件。
相關Druid博文鏈接:http://www.iteye.com/magazines/90
1.2 集成Druid
整體步驟:
(1) —— Druid簡單介紹,具體看官網;http://druid.io/
(2) ——在pom.xml配置druid依賴包;
<dependency>
<!--druid連接池 -->
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.0.25</version>
</dependency>
(3) —— 配置application.properties加入數據庫源類型等參數;
# mysql
spring.datasource.url=jdbc:mysql://localhost:3306/test
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
# 使用druid連接池 需要注意的是:spring.datasource.type舊的spring boot版本是不能識別的。
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
# mybatis
mybatis.type-aliases-package=com.wyait.boot.pojo
mybatis.mapper-locations=classpath:mapper/*.xml
mapper.mappers=com.wyait.boot.dao
mapper.not-empty=false
mapper.identity=MYSQL
# pagehelper
pagehelper.helperDialect=mysql
pagehelper.reasonable=true
pagehelper.supportMethodsArguments=true
pagehelper.params=count=countSql
# druid
#下面爲連接池的補充設置,應用到上面所有數據源中
# 初始化大小,最小,最大
spring.datasource.initialSize=5
spring.datasource.minIdle=5
spring.datasource.maxActive=20
# 配置獲取連接等待超時的時間
spring.datasource.maxWait=60000
# 配置間隔多久才進行一次檢測,檢測需要關閉的空閒連接,單位是毫秒
spring.datasource.timeBetweenEvictionRunsMillis=60000
# 配置一個連接在池中最小生存的時間,單位是毫秒
spring.datasource.minEvictableIdleTimeMillis=300000
# Oracle請使用select 1 fromdual
spring.datasource.validationQuery=SELECT'x'
spring.datasource.testWhileIdle=true
spring.datasource.testOnBorrow=false
spring.datasource.testOnReturn=false
# 打開PSCache,並且指定每個連接上PSCache的大小
spring.datasource.poolPreparedStatements=true
spring.datasource.maxPoolPreparedStatementPerConnectionSize=20
# 配置監控統計攔截的filters,去掉後監控界面sql無法統計,'wall'用於防火牆 ;日誌是slf4j,log4j改爲slf4j
spring.datasource.filters=stat,wall,log4j
# 通過connectProperties屬性來打開mergeSql功能;慢SQL記錄
spring.datasource.connectionProperties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
# 合併多個DruidDataSource的監控數據
#spring.datasource.useGlobalDataSourceStat=true
(4) ——編寫druid servlet和filter提供監控頁面訪問;
/**
*
* @項目名稱:mybatis-spring-boot
* @類名稱:DruidConfiguration
* @類描述:Druid監控servelet和filter配置
* @創建人:wyait
* @創建時間:2017年6月29日下午3:04:15
* @version:
*/
@Configuration
public class DruidConfiguration{
@Bean
publicServletRegistrationBean druidServlet() {
ServletRegistrationBeanservletRegistrationBean = new ServletRegistrationBean();
servletRegistrationBean.setServlet(newStatViewServlet());
servletRegistrationBean.addUrlMappings("/druid/*");
Map<String,String> initParameters = new HashMap<String, String>();
initParameters.put("loginUsername","admin");// 用戶名
initParameters.put("loginPassword","admin");// 密碼
initParameters.put("resetEnable","false");// 禁用HTML頁面上的“Reset All”功能
initParameters.put("allow",""); // IP白名單 (沒有配置或者爲空,則允許所有訪問)
//initParameters.put("deny", "192.168.20.38");// IP黑名單
//(存在共同時,deny優先於allow)
servletRegistrationBean.setInitParameters(initParameters);
returnservletRegistrationBean;
}
@Bean
publicFilterRegistrationBean filterRegistrationBean() {
FilterRegistrationBeanfilterRegistrationBean = new FilterRegistrationBean();
filterRegistrationBean.setFilter(newWebStatFilter());
filterRegistrationBean.addUrlPatterns("/*");
//@WebInitParam(name="exclusions",value="*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico,/druid/*")//
//忽略資源
filterRegistrationBean.addInitParameter("exclusions",
"*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico,/druid/*");
returnfilterRegistrationBean;
}
}
(5) ——輸入地址進行測試;
spring-boot相關項目源碼,
碼雲地址:https://git.oschina.net/wyait/springboot1.5.4.git
github地址:https://github.com/wyait/spring-boot-1.5.4.git
spring boot系列文章:
spring boot 1.5.4 集成devTools(五)
spring boot 1.5.4 集成JdbcTemplate(六)
spring boot 1.5.4 集成spring-Data-JPA(七)
spring boot 1.5.4 定時任務和異步調用(十)
spring boot 1.5.4 整合log4j2(十一)
spring boot 1.5.4 整合 mybatis(十二)
spring boot 1.5.4 整合 druid(十三)
spring boot 1.5.4 之監控Actuator(十四)
spring boot 1.5.4 整合webService(十五)
spring boot 1.5.4 整合redis、攔截器、過濾器、監聽器、靜態資源配置(十六)
spring boot 1.5.4 整合rabbitMQ(十七)
spring boot 1.5.4 集成Swagger2構建Restful API(十八)