题外话: SpringBoot整合Druid 请查看https://www.cnblogs.com/JealousGirl/p/druid.html
Druid登录后数据源页面、SQL监控等不显示数据信息。具体情况如下:
搜索到的解决方案各式各样。
前提条件:
1. 配置文件中的druid的配置参数信息格式是否有错误, 是否全都是spring.datasource.*
2. 配置统计拦截的filters是否写的正确。日志框架与项目采用的日志框架格式保证一致。如下图红框标注处:
在保证以上内容一致的情况下。出现SQL监控不显示数据问题解决方案如下。
1. 更改前代码(我是配置多数据源,故有@Primary)
@Bean(name = "oneDataSource")
@ConfigurationProperties(prefix = "spring.datasource.one")
@Primary
public DataSource oneDataSource() {
return DataSourceBuilder.create().build();
}
更改后代码
@Value("${spring.datasource.one.name}")
private String oneName; @Value("${spring.datasource.one.url}")
private String oneUrl; @Value("${spring.datasource.one.username}")
private String oneUsername; @Value("${spring.datasource.one.password}")
private String onePassword; @Value("${spring.datasource.one.driver-class-name}")
private String oneDriverClassName; @Value("${spring.datasource.one.initialSize}")
private String oneInitialSize; @Value("${spring.datasource.one.minIdle}")
private String oneMinIdle; @Value("${spring.datasource.one.maxActive}")
private String oneMaxActive; @Value("${spring.datasource.one.maxWait}")
private String oneMaxWait; @Value("${spring.datasource.one.timeBetweenEvictionRunsMillis}")
private String oneTimeBetweenEvictionRunsMillis; @Value("${spring.datasource.one.minEvictableIdleTimeMillis}")
private String oneMinEvictableIdleTimeMillis; @Value("${spring.datasource.one.validationQuery}")
private String oneValidationQuery; @Value("${spring.datasource.one.filters}")
private String oneFilters; @Value("{spring.datasource.one.logSlowSql}")
private String oneLogSlowSql; @Value("${spring.datasource.one.type}")
private String oneType; @Value("{spring.datasource.one.maxIdle}")
private String oneMaxIdle; @Bean
@Primary
public DataSource oneDataSource() {
DruidDataSource datasource = new DruidDataSource(); datasource.setUrl(oneUrl);
datasource.setUsername(oneUsername);
datasource.setPassword(onePassword);
datasource.setDriverClassName(oneDriverClassName); //configuration
if (StringUtils.isNotBlank(oneInitialSize)) {
datasource.setInitialSize(Integer.parseInt(oneInitialSize));
}
if (StringUtils.isNotBlank(oneMinIdle)) {
datasource.setMinIdle(Integer.parseInt(oneMinIdle));
}
if (StringUtils.isNotBlank(oneMaxActive)) {
datasource.setMaxActive(Integer.parseInt(oneMaxActive));
}
if (StringUtils.isNotBlank(oneMaxWait)) {
datasource.setMaxWait(Integer.parseInt(oneMaxWait));
}
if (StringUtils.isNotBlank(oneTimeBetweenEvictionRunsMillis)) {
datasource.setTimeBetweenEvictionRunsMillis(Integer.parseInt(oneTimeBetweenEvictionRunsMillis));
}
if (StringUtils.isNotBlank(oneMinEvictableIdleTimeMillis)) {
datasource.setMinEvictableIdleTimeMillis(Integer.parseInt(oneMinEvictableIdleTimeMillis));
} datasource.setValidationQuery(oneValidationQuery);
datasource.setTestWhileIdle(true);
datasource.setTestOnBorrow(false);
datasource.setTestOnReturn(false);
try {
datasource.setFilters(oneFilters);
} catch (SQLException e) {
e.printStackTrace();
}
return datasource;
}
也有其他地方搜索到的解决方案,亲身测试后,使用手动配置数据信息时未发现有不同,大家可以尝试一下,一起分享。
方案一:有人说是包引入错误
改为
方案二: 有人说是未配置监控拦截的filters(以上截图中有此配置,故不再截图)
至于为什么使用注解配置的数据信息不显示SQL监控等信息,目前还未找到原因。也搜到了相关解决方案,具体如下,很可惜尝试后未解决。。。
方案一: 如果是jpa引入jar包, 如果是是mybatis 在@Bean后加上init属性。 我的是mybatis
可能是我没有写初始化和销毁方案,所以才会报错吧。 问题是我也不知道咋写啊