1.Druid是什麼 Druid是Java語言中最好的資料庫連接池之一,Druid能夠提供強大的監控和擴展功能。 2.Druid連接池的優點: 強大的監控特性,通過Druid提供的監控功能,可以清楚知道連接池和SQL的工作情況。 方便擴展。Druid提供了Filter-Chain模式的擴展API,可 ...
1.Druid是什麼 Druid是Java語言中最好的資料庫連接池之一,Druid能夠提供強大的監控和擴展功能。 2.Druid連接池的優點:
- 強大的監控特性,通過Druid提供的監控功能,可以清楚知道連接池和SQL的工作情況。
- 方便擴展。Druid提供了Filter-Chain模式的擴展API,可以自己編寫Filter攔截JDBC中的任何方法,可以在上面做任何事情,比如說性能監控、SQL審計、用戶名密碼加密、日誌等等。
- Druid集合了開源和商業資料庫連接池的優秀特性,並結合阿裡巴巴大規模苛刻生產環境的使用經驗進行優化
1 <!-- 阿裡系的Druid依賴包 --> 2 <dependency> 3 <groupId>com.alibaba</groupId> 4 <artifactId>druid-spring-boot-starter</artifactId> 5 <version>1.1.21</version> 6 </dependency> 7 8 9 <!-- Druid 依賴 log4j包 --> 10 <dependency> 11 <groupId>org.slf4j</groupId> 12 <artifactId>slf4j-log4j12</artifactId> 13 </dependency>
2.配置application.yml
1 spring: 2 datasource: 3 username: root 4 password: root 5 url: jdbc:mysql://localhost:3306/security_authority?characterEncoding=utf8&autoReconnect=true&zeroDateTimeBehavior=convertToNull&useSSL=false&allowMultiQueries=true 6 driver-class-name: com.mysql.jdbc.Driver 7 type: com.alibaba.druid.pool.DruidDataSource 8 # 下麵為連接池的補充設置,應用到上面所有數據源中 9 # 初始化大小,最小,最大 10 druid.initial-size: 5 11 druid.min-idle: 5 12 druid.max-active: 20 13 # 配置獲取連接等待超時的時間 14 druid.max-wait: 60000 15 # 配置間隔多久才進行一次檢測,檢測需要關閉的空閑連接,單位是毫秒 16 druid.time-between-eviction-runs-millis: 60000 17 # 配置一個連接在池中最小生存的時間,單位是毫秒 18 druid.min-evictable-idle-time-millis: 300000 19 druid.validation-query: SELECT 1 FROM DUAL 20 druid.test-while-idle: true 21 druid.test-on-borrow: false 22 druid.test-on-return: false 23 # 打開PSCache,並且指定每個連接上PSCache的大小 24 druid.pool-prepared-statements: true 25 # 配置監控統計攔截的filters,去掉後監控界面sql無法統計,'wall'用於防火牆 26 druid.max-pool-prepared-statement-per-connection-size: 20 27 druid.filters: stat,wall 28 druid.use-global-data-source-stat: true 29 # 通過connectProperties屬性來打開mergeSql功能;慢SQL記錄 30 druid.connect-properties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
3.建立配置類
1 /** 2 * @author jiz-a 3 * @version 1.0 4 * @date 2020/5/28 16:10 5 */ 6 @Configuration 7 public class DruidConfig { 8 /** 9 * 把配置文件中自己配置的數據源值註入到druid 10 * 11 * @return 資料庫資源 12 */ 13 @Bean 14 @ConfigurationProperties(prefix = "spring.datasource") 15 public DataSource druid() { 16 return new DruidDataSource(); 17 } 18 19 /** 20 * 配置Druid的監控,如果不配置這個類,將連接不上druid後臺。http://localhost:8080/druid/ 21 * 配置一個管理後臺的Servlet 22 * 23 * @return Servlet 24 */ 25 @Bean 26 public ServletRegistrationBean<StatViewServlet> statViewServlet() { 27 ServletRegistrationBean<StatViewServlet> bean = new ServletRegistrationBean<>(new StatViewServlet(), "/druid/*"); 28 Map<String, String> params = new HashMap<>(4); 29 //設置後臺登錄名、密碼 30 params.put("loginUsername", "admin"); 31 params.put("loginPassword", "666"); 32 //設置預設就是允許所有訪問、設置黑名單 33 params.put("allow", ""); 34 // params.put("deny", ""); 35 bean.setInitParameters(params); 36 return bean; 37 } 38 39 /** 40 * 配置一個web監控的filter,如果不配置這個類,在頁面的Web模塊功能不會開啟 41 * 42 * @return 過濾器 43 */ 44 @Bean 45 public FilterRegistrationBean<WebStatFilter> webStatFilter() { 46 FilterRegistrationBean<WebStatFilter> frb = new FilterRegistrationBean<>(); 47 frb.setFilter(new WebStatFilter()); 48 Map<String, String> params = new HashMap<>(); 49 //設置不攔截請求 50 params.put("exclusions", "*.js,*.css,/druid/*"); 51 frb.setInitParameters(params); 52 //攔截請求 53 frb.setUrlPatterns(Arrays.asList("/*")); 54 return frb; 55 } 56 }
4.啟動,測試;
http://localhost:8090/druid/login.html
至此SpringBoot集成了Druid。