Spring Boot學習筆記5——整合Druid

由於Spring Boot默認不支持Druid連接池,所以需要自己進行一些配置

1.首先導入Druid需要的依賴

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
    <version>1.1.12</version>
</dependency>

2.在properties中加入這些配置

spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/scott?useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8
spring.datasource.username=root
spring.datasource.password=root
#在控制檯中顯示sql語句
spring.jpa.show-sql=true
#格式化json顯示
spring.jackson.serialization.indent-output=true
#Druid配置
#數據庫類型爲mysql
spring.datasource.dbType=mysql
#啓動時初始化5個連接
spring.datasource.initialSize=5
#最小空閒連接5個
spring.datasource.minIdle=5
#最大連接數量20
spring.datasource.maxActive=20
#獲取連接等待時間60秒,超出報錯
spring.datasource.maxWait=60000
#每60秒執行一次連接回收器
spring.datasource.timeBetweenEvictionRunsMillis=60000
#5分鐘內沒有任何操作的空閒連接會被回收
spring.datasource.minEvictableIdleTimeMillis=300000
#驗證連接有效性的SQL
spring.datasource.validationQuery=select 'x'
#空閒時校驗,建議開啓
spring.datasource.testWhileIdle=true
#使用中是否校驗有效性,推薦關閉
spring.datasource.testOnBorrow=false
#歸還連接時校驗有效性,推薦關閉
spring.datasource.testOnReturn=false
spring.datasource.poolPreparedStatements=false
#設置過濾器,stat用於接收狀態,wall用於防止SQL注入,logback則說明使用logback日誌輸出
spring.datasource.filters=stat,wall,logback
#統計所有數據源狀態
spring.datasource.useGlobalDataSourceStat=true
#sql合併統計,與設置慢SQL時間爲500毫秒
spring.datasource.connectionProperties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500

3.在Spring Boot入口文件進行相應的配置

package com.xx;

import java.util.HashMap;
import java.util.Map;

import javax.sql.DataSource;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;

import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.support.http.StatViewServlet;
import com.alibaba.druid.support.http.WebStatFilter;

@SpringBootApplication
public class SpringBootJpaApplication {

	//手動初始化DataSource對象
	@Bean
	@ConfigurationProperties(prefix = "spring.datasource")
	public DataSource druid() {
		DruidDataSource ds = new DruidDataSource();
		return ds;
	}
	
	//註冊後臺界面Servlet,用於顯示後臺界面
	@Bean
	public ServletRegistrationBean<StatViewServlet> statViewServlet() {
		//創建StatViewServlet綁定到/druid/路徑下
		//開啓後,訪問localhost/druid就可以看到druid管理後臺
		ServletRegistrationBean<StatViewServlet> bean = new ServletRegistrationBean<StatViewServlet>(new StatViewServlet(),"/druid/*");
		Map<String,String> param = new HashMap<>();
		param.put("loginUsername", "admin");
		param.put("loginPassword", "admin");
		//允許哪些IP地址訪問後臺
		param.put("allow", "");
		//不允許這個IP訪問
		param.put("deny", "192.168.0.1");
		bean.setInitParameters(param);
		return bean;
	}
	
	//用於監聽獲取應用的數據,Filter用於收集數據,Servlet用於展示數據
	@Bean
	public FilterRegistrationBean<WebStatFilter> webStatFilter() {
		FilterRegistrationBean<WebStatFilter> bean = new FilterRegistrationBean<WebStatFilter>();
		bean.setFilter(new WebStatFilter());//設置過濾器
		bean.addUrlPatterns("/*");//對所有請求進行過濾
		Map<String,String> param = new HashMap<>();
		param.put("exclusions", "*.js,*.css,/druid/*");//這些內容不過濾
		bean.setInitParameters(param);
		return bean;
	}
	
	
	public static void main(String[] args) {
		SpringApplication.run(SpringBootJpaApplication.class, args);
	}

}

4.啓動項目,在頁面輸入http://localhost:8080/druid,輸入用戶名:admin,密碼:admin,就可以訪問到Druid後臺管理界面

 

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