第一步:引入相關依賴,全部依賴都是上一篇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