Spring Boot无视application.properties配置连接未指定数据库如何解决
Spring Boot 数据源配置不生效问题解决方案
常见根因及对应修复步骤
- 多配置文件覆盖问题
- 检查项目中是否存在
application.yml/application.yaml,同属性下yml/yaml配置优先级高于application.properties,会覆盖后者的数据源配置 - 检查是否激活了特定环境配置,比如启动参数携带
--spring.profiles.active=xxx,对应的application-xxx.properties/yml配置优先级高于主配置文件 - 检查是否通过
--spring.config.location指定了外部配置文件,外部配置优先级高于classpath下的配置,可能存在你未感知的数据源参数
- 检查项目中是否存在
- 嵌入式数据库自动配置触发
- 检查依赖文件(pom.xml/gradle.build)是否引入了H2、HSQL、Derby等嵌入式数据库依赖,Spring Boot未检测到显式数据源配置时,会自动初始化嵌入式数据库,默认库名通常为
my_db- 不需要嵌入式数据库直接移除对应依赖即可
- 需保留依赖的话可显式声明
spring.datasource.type指定连接池类型,或添加配置spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration关闭数据源自动配置
- 检查依赖文件(pom.xml/gradle.build)是否引入了H2、HSQL、Derby等嵌入式数据库依赖,Spring Boot未检测到显式数据源配置时,会自动初始化嵌入式数据库,默认库名通常为
- 自定义配置优先级高于文件配置
- 检查项目中是否存在
@Configuration修饰的自定义数据源配置类,硬编码注入了库名为my_db的数据源,通过@Bean注册的数据源优先级高于配置文件自动装配的数据源 - 检查是否存在
@PropertySource注解加载了其他路径下的配置文件,里面的数据源参数覆盖了主配置的配置
- 检查项目中是否存在
- 配置路径/参数拼写错误
- 检查
application.properties是否放在了正确的加载路径,Spring Boot默认配置加载优先级从高到低为:项目根目录config文件夹 > 项目根目录 > classpath下config文件夹 > classpath根目录,放错路径的配置会被高优先级位置的配置覆盖 - 检查属性拼写是否正确,自动装配场景使用
spring.datasource.url,如果是自定义Hikari连接池单独配置才需要使用spring.datasource.hikari.jdbc-url
- 检查
排查时可在配置文件添加
debug=true启动项目,控制台会输出配置项的加载来源,可直接定位到数据源参数的读取位置
内容的提问来源于stack exchange,提问作者Said SB-Coder
相关产品推荐
相关产品推荐

