第一步:引入相關依賴,全部依賴都是上一篇springboot+mybatis依賴的基礎上,再加上下邊的依賴,如下:
<!-- Druid數據庫連接池組件 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.0.18</version>
</dependency>
注意,由於druid的配置還需要一些注解,比如@WebInitParam @WebFilter 等,它們在spring boot里來自於tomcat-embed-core包,而該包又來自於spring-boot-starter-web,所以,除了上邊的依賴以外,一定要保證spring-boot-starter-web 的引入,我項目引入具體如下:
<!-- Spring Boot Web 依賴 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
第二步:再springboot項目的配置文件application.yml文件中加入如下內容:
spring:
##數據庫連接信息
datasource:
url: jdbc:mysql://localhost:3306/young
username: root
password: root
driver-class-name: com.mysql.jdbc.Driver
###################以下為druid增加的配置###########################
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
# 打開PSCache,並且指定每個連接上PSCache的大小
poolPreparedStatements: true
maxPoolPreparedStatementPerConnectionSize: 20
# 配置監控統計攔截的filters,去掉后監控界面sql無法統計,'wall'用於防火牆
filters: stat,wall,log4j
# 通過connectProperties屬性來打開mergeSql功能;慢SQL記錄
connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
# 合並多個DruidDataSource的監控數據
useGlobalDataSourceStat: true
###############以上為配置druid添加的配置########################################
第三步:還需要添加三個配置類,如下:
package com.young.config;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import com.alibaba.druid.pool.DruidDataSource;
import javax.sql.DataSource;
/**
* 配置druid需要的配置類,引入application.properties文件中以spring.datasource開頭的信息
* 因此需要在application.properties文件中配置相關信息。
*
* @author young
*/
@Configuration
public class DruidConfig {
@Bean
@ConfigurationProperties(prefix = "spring.datasource")
public DataSource druidDataSource() {
DruidDataSource druidDataSource = new DruidDataSource();
return druidDataSource;
}
}
上圖可以看出只是將DataSource對象的實現類變為了DruidDataSource對象
下圖是過濾規則的配置
package com.young.config;
import com.alibaba.druid.support.http.WebStatFilter;
import javax.servlet.annotation.WebFilter;
import javax.servlet.annotation.WebInitParam;
/**
* 配置druid過濾規則
* @author young
*
*/
@WebFilter(filterName="druidWebStatFilter",urlPatterns="/*",
initParams={
@WebInitParam(name="exclusions",value="*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico,/druid/*")// 忽略資源
})
public class DruidStatFilter extends WebStatFilter{
}
以上三個類配置完之后,需要在啟動類多添加一個注解,既@ServletComponentScan
package com.young;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.ServletComponentScan;
@SpringBootApplication
@ServletComponentScan //配置druid必須加的注解,如果不加,訪問頁面打不開,filter和servlet、listener之類的需要單獨進行注冊才能使用,spring boot里面提供了該注解起到注冊作用
@MapperScan("com.young.mapper")//必須加這個,不加報錯,如果不加,也可以在每個mapper上添加@Mapper注釋
public class StartApplication {
public static void main(String[] args) {
SpringApplication.run(StartApplication.class, args);
}
}
第四步:以上配置完成后,啟動項目以后,可以訪問druid頁面了,比如我的項目端口號是8080,我的訪問頁面如下:(我沒有配置項目名,springboot默認頁面從“/”開始)

賬號密碼即為配置類中配置的admin

