文档章节

Spring Boot使用Druid和监控配置

阿恒灬
 阿恒灬
发布于 2017/04/07 11:18
字数 380
阅读 14
收藏 0

pom.xml

<dependency>
   <groupId>com.alibaba</groupId>
   <artifactId>druid</artifactId>
   <version>1.0.27</version>
</dependency>

配置filter

@WebFilter(filterName = "druidWebStatFilter", urlPatterns = "/*",
        initParams = {@WebInitParam(name = "exclusions", value = "*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico,/druid/*")// 忽略资源
        })
public class DruidFilter extends WebStatFilter {
}

自定义的servlet

@WebServlet(urlPatterns = "/druid/*",
        initParams = {@WebInitParam(name = "allow", value = "127.0.0.1"),//访问白名单
                @WebInitParam(name = "deny", value = "192.168.0.121"),//访问黑名单
                @WebInitParam(name = "loginUsername", value = "admin"),//登录名
                @WebInitParam(name = "loginPassword", value = "123456"),//登录密码
                @WebInitParam(name = "resetEnable", value = "false")})//禁止页面reset all

public class DruidServlet extends StatViewServlet{
}

然后访问 http://localhost:8080/druid/index.html

但是会发现sql监控一直是空的,发现是springboot的版本问题,回退到1.3+是没有问题的。1.4+就是空的,所以要手动配置下DataSource,手动引入配置文件的的属性

@Configuration
public 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 DataSource 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;
    }
}

再次就会发现sql监控就有统计数据了

完整的代码

© 著作权归作者所有

阿恒灬
粉丝 3
博文 39
码字总数 29389
作品 0
杭州
程序员
私信 提问
Spring Boot整合MyBatis学习总结

公司的很多项目都陆陆续续引入了Spring Boot,通过对Spring Boot的接触了解发现其真的是大大地简化了开发、简化了依赖配置,很多功能注解一下就可以实现,真的是太方便了。下面记录了一个Spr...

zhuwensheng
2018/06/29
0
0
Spring Boot 2.0配置druid

第一种方式: 1、引入相关的包,刚开始没引入log4j包,一直报错。 2、添加druid相关的属性配置,具体各属性的意思,可以找官网或百度上去搜。 运行即可。 第二种方式: 均源于阿里参考:htt...

sam_l
2018/08/03
0
0
Spring Boot之使用阿里巴巴Druid数据库连接池(数据源)

版权声明:本文为博主原创文章,转载需注明出处。 https://blog.csdn.net/jay100500/article/details/81270298 作者:谭东 Druid是一个关系型数据库连接池,它是阿里巴巴的一个开源项目。Dru...

谭东jay
2018/07/29
0
0
dynamic-datasource-spring-boot-starter V1.1.0 发布

SpringBoot2.x默认使用HikariCP,但在国内Druid的使用者非常庞大,此项目特地对其进行了适配,完成多数据源下使用Druid进行监控。 项目引入druid-spring-boot-starter依赖。 排除原生Druid的...

小锅盖
2018/05/05
1K
4
阿里开源连接池 Druid 增强对 Spring Boot 各版本的兼容

阿里开源连接池Druid 1.1.8已发布,这个版本主要是增强对spring-boot 1.x和2.0的兼容。 Issues MSSQLServer配置validationQueryTimeout为负数时自动忽略而不报错 #2210 修复SQL Parser问题 ...

wenshao
2018/02/11
4.9K
4

没有更多内容

加载失败,请刷新页面

加载更多

Feign Retryer的默认重试策略测试

1、Feign配置 @Configurationpublic class FeignConfig { @Value("${coupon_service.url:http://localhost:8081}") private String couponServiceUrl; @Bean publ......

moon888
17分钟前
1
0
关于不同域名下的session共享问题

如果登录,首页,分类,列表,产品都在不同的二级域名下,主域名不变,一定要保证里面的版本问题,不能为了更新而更新,这样哪个下面的session都访问不了。

dragon_tech
19分钟前
1
0
iOS 中文拼音互转(好东西记录一下)

PinYin4Objc

_____1____
27分钟前
1
0
fabric private data实战

Hyperledger Fabric private data是1.2版本引入的新特性,fabric private data是利用旁支数据库(SideDB)来保存若干个通道成员之间的私有数据,从而在通道之上又提供了一层更灵活的数据保护...

汇智网教程
27分钟前
1
0
es之聚合查询汇总

记录一下最近用到的es聚合查询,感觉常见的应该多遇上了,下午抽空更新

我真是小菜鸡
28分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部