spring boot 1.5.4 整合 druid(十三)

上一篇: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,能夠提供基於FilterChain模式的插件體系。 

DruidDataSource 高效可管理的數據庫連接池。 

SQLParser 

Druid可以做什麼? 

1) 可以監控數據庫訪問性能,Druid內置提供了一個功能強大的StatFilter插件,能夠詳細統計SQL的執行性能,這對於線上分析數據庫訪問性能有幫助。 

2) 替換DBCPC3P0Druid提供了一個高效、功能強大、可擴展性好的數據庫連接池。 

3) 數據庫密碼加密。直接把數據庫密碼寫在配置文件中,這是不好的行爲,容易導致安全問題。DruidDruiverDruidDataSource都支持PasswordCallback 

4) SQL執行日誌,Druid提供了不同的LogFilter,能夠支持Common-LoggingLog4jJdkLog,你可以按需要選擇相應的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'用於防火牆 ;日誌是slf4jlog4j改爲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 servletfilter提供監控頁面訪問;

/**

 *

 * @項目名稱:mybatis-spring-boot

 * @類名稱:DruidConfiguration

 * @類描述:Druid監控serveletfilter配置

 * @創建人:wyait

 * @創建時間:2017629下午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)    ——輸入地址進行測試;

wKiom1nNq2KAAfMuAAFHnh7RmrQ330.png

 

 

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 概述(一)

spring boot 1.5.4 入門和原理(二)

spring boot 1.5.4 之web開發(三)

spring boot 1.5.4 整合JSP(四)

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 統一異常處理(九)

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(十八)

spring boot 1.5.9 整合redis(十九


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章