博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring Boot 使用Druid
阅读量:6877 次
发布时间:2019-06-26

本文共 5576 字,大约阅读时间需要 18 分钟。

hot3.png

请尽量使用高版本Spring boot 1.4以上

 

在Spring Boot1.4.0中驱动配置信息没有问题,但是连接池的配置信息不再支持这里的配置项,即无法通过配置项直接支持相应的连接池;这里列出的这些配置项可以通过定制化DataSource来实现。

目前Spring Boot中默认支持的连接池有dbcp,dbcp2, tomcat, hikari连接池。 

由于Druid暂时不在Spring Boot中的直接支持,故需要进行配置信息的定制:

package com.boot.config;import com.alibaba.druid.pool.DruidDataSource;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.beans.factory.annotation.Value;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.context.annotation.Primary;import javax.activation.DataSource;import java.sql.SQLException;@Configurationpublic class DruidDBConfig {    private Logger logger = LoggerFactory.getLogger(DruidDBConfig.class);    @Value("${spring.datasource.url}")    private String dbUrl;    @Value("${spring.datasource.username}")    private String username;    @Value("${spring.datasource.password}")    private String password;    @Value("${spring.datasource.driverClassName}")    private String driverClassName;    @Value("${spring.datasource.initialSize}")    private int initialSize;    @Value("${spring.datasource.minIdle}")    private int minIdle;    @Value("${spring.datasource.maxActive}")    private int maxActive;    @Value("${spring.datasource.maxWait}")    private int maxWait;    @Value("${spring.datasource.timeBetweenEvictionRunsMillis}")    private int timeBetweenEvictionRunsMillis;    @Value("${spring.datasource.minEvictableIdleTimeMillis}")    private int minEvictableIdleTimeMillis;    @Value("${spring.datasource.validationQuery}")    private String validationQuery;    @Value("${spring.datasource.testWhileIdle}")    private boolean testWhileIdle;    @Value("${spring.datasource.testOnBorrow}")    private boolean testOnBorrow;    @Value("${spring.datasource.testOnReturn}")    private boolean testOnReturn;    @Value("${spring.datasource.poolPreparedStatements}")    private boolean poolPreparedStatements;    @Value("${spring.datasource.maxPoolPreparedStatementPerConnectionSize}")    private int maxPoolPreparedStatementPerConnectionSize;    @Value("${spring.datasource.filters}")    private String filters;    @Value("{$spring.datasource.connectionProperties}")    private String connectionProperties;    @Bean     //声明其为Bean实例    @Primary  //在同样的DataSource中,首先使用被标注的DataSource    public DruidDataSource dataSource(){        DruidDataSource datasource = new DruidDataSource();        datasource.setUrl(this.dbUrl);        datasource.setUsername(username);        datasource.setPassword(password);        datasource.setDriverClassName(driverClassName);        //configuration        datasource.setInitialSize(initialSize);        datasource.setMinIdle(minIdle);        datasource.setMaxActive(maxActive);        datasource.setMaxWait(maxWait);        datasource.setTimeBetweenEvictionRunsMillis(timeBetweenEvictionRunsMillis);        datasource.setMinEvictableIdleTimeMillis(minEvictableIdleTimeMillis);        datasource.setValidationQuery(validationQuery);        datasource.setTestWhileIdle(testWhileIdle);        datasource.setTestOnBorrow(testOnBorrow);        datasource.setTestOnReturn(testOnReturn);        datasource.setPoolPreparedStatements(poolPreparedStatements);        datasource.setMaxPoolPreparedStatementPerConnectionSize(maxPoolPreparedStatementPerConnectionSize);        try {            datasource.setFilters(filters);        } catch (SQLException e) {            logger.error("druid configuration initialization filter", e);        }        datasource.setConnectionProperties(connectionProperties);        return datasource;    }}

 

 

package com.boot.filter;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;import com.alibaba.druid.support.http.StatViewServlet;import com.alibaba.druid.support.http.WebStatFilter;/** * druid 配置. * * 这样的方式不需要添加注解:@ServletComponentScan * @author Administrator * */@Configurationpublic class DruidConfiguration {    /**     * 注册一个StatViewServlet     * @return     */    @Bean    public ServletRegistrationBean DruidStatViewServle2(){        //org.springframework.boot.context.embedded.ServletRegistrationBean提供类的进行注册.        ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new StatViewServlet(),"/druid/*");        //添加初始化参数:initParams        //白名单:        servletRegistrationBean.addInitParameter("allow","127.0.0.1");        //IP黑名单 (存在共同时,deny优先于allow) : 如果满足deny的话提示:Sorry, you are not permitted to view this page.        servletRegistrationBean.addInitParameter("deny","");        //登录查看信息的账号密码.        servletRegistrationBean.addInitParameter("loginUsername","admin");        servletRegistrationBean.addInitParameter("loginPassword","123456");        //是否能够重置数据.        servletRegistrationBean.addInitParameter("resetEnable","false");        return servletRegistrationBean;    }    /**     * 注册一个:filterRegistrationBean     * @return     */    @Bean    public FilterRegistrationBean druidStatFilter2(){        FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(new WebStatFilter());        //添加过滤规则.        filterRegistrationBean.addUrlPatterns("/*");        //添加不需要忽略的格式信息.        filterRegistrationBean.addInitParameter("exclusions","*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*");        return filterRegistrationBean;    }}

 

运行一下 访问

http://127.0.0.1/druid/index.html

转载于:https://my.oschina.net/yejunxi/blog/845020

你可能感兴趣的文章
ELK调优
查看>>
mysql性能优化2
查看>>
【Java】Java 实现导出excel表 POI
查看>>
泛型-泛型的上限
查看>>
[转载] C#面向对象设计模式纵横谈——24 Visitor访问者模式
查看>>
QT+树莓派实现一个简单的播放器
查看>>
python redis 操作 Sorted Set 出现 'str' object has no attribute 'items'
查看>>
Javascript 面向对象编程
查看>>
Java基础学习总结(14)——Java对象的序列化和反序列化
查看>>
图片翻转
查看>>
了解 Open vSwitch 环境中的各种网络设备
查看>>
Maven学习总结(三)——使用Maven构建项目
查看>>
Go语言开发(三)、Go语言内置容器
查看>>
web.xml配置详解
查看>>
Java8 十大新特性详解
查看>>
DNS服务器搭建
查看>>
/var/log下的日志
查看>>
Java基础学习总结(1)——equals方法
查看>>
MySQL 5.7 忘记密码后修改密码
查看>>
webbench压力测试工具
查看>>