Spring Boot应用未读取application.properties,端口仍为8080
你的application.properties所有配置都未生效,包括server.port设置,以下是针对性的排查步骤:
确认配置文件路径
检查文件是否放在Spring Boot默认的src/main/resources目录下。如果误放在src/test/resources或其他非资源目录,启动时不会加载该文件。检查文件格式与命名
- 确保文件后缀确实是
.properties,避免因系统隐藏文件后缀导致实际为application.properties.txt - 检查文件编码(推荐UTF-8),避免存在不可见特殊字符或全角空格,导致配置解析失败
- 确保文件后缀确实是
排查外部覆盖优先级
Spring Boot配置优先级从高到低:命令行参数 > 环境变量 > 配置文件,检查以下场景:- IDE启动配置中,是否添加了
--server.port=8080这类程序参数,或VM参数中设置了-Dserver.port=8080 - 系统环境变量中是否存在
SERVER_PORT、SPRING_APPLICATION_JSON等覆盖配置的变量 - 如果是jar包启动,是否附带了命令行参数覆盖配置
- IDE启动配置中,是否添加了
检查配置加载日志
启动时添加--debug参数(或在IDE启动配置中设置VM参数-Ddebug),查看日志中是否有类似Loaded config file 'classpath:/application.properties'的记录。如果没有,说明配置文件未被加载;如果有加载记录但配置不生效,需排查是否有其他配置源覆盖。修复配置文件中的语法错误
你的配置中存在明显错误:spring.kafka.producer.key-serializer=org.apache.common.serialization.StringSerializer正确的类路径应为
org.apache.kafka.common.serialization.StringSerializer(少了kafka)。配置文件存在语法错误时,可能导致整个配置解析失败,先修复该错误再测试。排查自定义配置加载逻辑
检查项目中是否存在@PropertySource注解,或自定义的PropertySource实现,是否加载了其他配置文件并覆盖了默认配置,或未包含默认的application.properties。检查依赖与版本问题
确认spring-boot-starter-parent的版本是否正常,避免因版本兼容问题导致配置加载异常;排查第三方依赖是否存在修改配置加载逻辑的情况。
内容的提问来源于stack exchange,提问作者chinmay

