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

猜你喜欢

转载自blog.csdn.net/progammer10086/article/details/86605474