由于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后台管理界面