# 04-数据库连接池
# 一、Druid
引入依赖
<dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>1.1.22</version> </dependency>
配置
spring: datasource: druid: db-type: mysql initial-size: 5 min-idle: 5 max-active: 30 validationQuery: SELECT 1 web-stat-filter: enabled: true exclusions: /druid/* url-pattern: /* stat-view-servlet: url-pattern: /druid/* login-username: druid login-password: druid123123 reset-enable: false
配置
import com.alibaba.druid.pool.DruidDataSource; import com.alibaba.druid.spring.boot.autoconfigure.properties.DruidStatProperties; import com.alibaba.druid.support.http.StatViewServlet; import com.alibaba.druid.support.http.WebStatFilter; import com.alibaba.druid.support.spring.stat.BeanTypeAutoProxyCreator; import com.alibaba.druid.support.spring.stat.DruidStatInterceptor; import org.springframework.aop.Advisor; import org.springframework.aop.support.DefaultPointcutAdvisor; import org.springframework.aop.support.JdkRegexpMethodPointcut; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.web.servlet.FilterRegistrationBean; import org.springframework.boot.web.servlet.ServletRegistrationBean; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; /** * web配置 * * @Author qixiaodong * @Date 2020/8/28 16:58 */ @Configuration public class DruidConfig { @Autowired private DruidStatProperties druidStatProperties; /** * druidServlet注册 */ @Bean public ServletRegistrationBean druidServletRegistration() { DruidStatProperties.StatViewServlet statViewServlet = druidStatProperties.getStatViewServlet(); ServletRegistrationBean registration = new ServletRegistrationBean(new StatViewServlet(), statViewServlet.getUrlPattern()); // 控制台管理用户名 registration.addInitParameter("loginUsername", statViewServlet.getLoginUsername()); // 控制台管理密码 registration.addInitParameter("loginPassword", statViewServlet.getLoginPassword()); // 是否可以重置数据源,禁用HTML页面上的“Reset All”功能 registration.addInitParameter("resetEnable", statViewServlet.getResetEnable()); return registration; } /** * druid监控 配置URI拦截策略 */ @Bean public FilterRegistrationBean druidStatFilter() { FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(new WebStatFilter()); DruidStatProperties.WebStatFilter webStatFilter = druidStatProperties.getWebStatFilter(); //添加过滤规则. filterRegistrationBean.addUrlPatterns(webStatFilter.getUrlPattern()); //添加不需要忽略的格式信息. filterRegistrationBean.addInitParameter("exclusions", webStatFilter.getExclusions()); //用于session监控页面的用户名显示 需要登录后主动将username注入到session里 filterRegistrationBean.addInitParameter("principalSessionName", "username"); return filterRegistrationBean; } /** * druid数据库连接池监控 */ @Bean public DruidStatInterceptor druidStatInterceptor() { return new DruidStatInterceptor(); } @Bean public JdkRegexpMethodPointcut druidStatPointcut() { JdkRegexpMethodPointcut druidStatPointcut = new JdkRegexpMethodPointcut(); String patterns = "com.feihe.*.service.*"; //可以set多个 druidStatPointcut.setPatterns(patterns); return druidStatPointcut; } /** * druid数据库连接池监控 */ @Bean public BeanTypeAutoProxyCreator beanTypeAutoProxyCreator() { BeanTypeAutoProxyCreator beanTypeAutoProxyCreator = new BeanTypeAutoProxyCreator(); beanTypeAutoProxyCreator.setTargetBeanType(DruidDataSource.class); beanTypeAutoProxyCreator.setInterceptorNames("druidStatInterceptor"); return beanTypeAutoProxyCreator; } /** * druid 为druidStatPointcut添加拦截 */ @Bean public Advisor druidStatAdvisor() { return new DefaultPointcutAdvisor(druidStatPointcut(), druidStatInterceptor()); } }