问题:springboot整合mybatisplus和druid,yml自定义配置druid,登录druid监控页面发现与自己配置的不一样,即配置不起作用。
代码
jar包
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.2.3</version>
</dependency>
yml配置
代码
@Configuration
public class DruidConfig {
/**
* 指定加载appliction.yml文件里面的spring.datasource开头的
* DruidDataSource类里面的属性与appliction.yml文件里面的spring.datasource开头的对应映射
*
* @return
*/
@ConfigurationProperties(prefix = "spring.datasource")
@Bean
public DataSource druid() {
return new DruidDataSource();
}
//其他监控配置暂不贴出
}
项目启动执行一条查询,查看监控页面
发现配置未生效。
问题排查
通过idea下druid配置点击查看源码
默认确实是加载spring.datasource.druid前缀的配置,但是我代码里面是new DruidDataSource()没有用到这个类,故无法加在到idea里面的配置文件。
提示如果未找到spring.datasource.druid配置的jdbc连接属性,也可以使用spring.datasource配置的连接属性
里面的属性DataSourceProperties 默认加在spirng.datasource前缀的配置,故关于数据库连接的配置可用。
第一种修改方法
@Configuration
public class DruidConfig {
@Bean
//这个加载配置不需要了,在DruidDataSourceWrapper早已存在
//@ConfigurationProperties(prefix = "spring.datasource")
public DataSource druid() {
//return new DruidDataSource();
//使用构造器模式创建数据源,这是druid里面提供给我们的入口
return DruidDataSourceBuilder.create().build();
}
}
重新启动查看
跟yml配置的一样了
第二种配置方法
代码不变
@Bean
//指定加载spring.datasource前缀的所有配置
@ConfigurationProperties(prefix = "spring.datasource")
public DataSource druid() {
return new DruidDataSource();
}
配置文件进行修改
这种配置idea是识别不到的,项目启动查看监控界面
发现配置生效
推荐使用第一种配置方法