下面是详细讲解“springboot读取application.yml报错问题及解决”的完整攻略。
问题描述
在使用Spring Boot项目时,我们有时候会遇到无法读取 application.yml
配置文件的问题,出现类似如下错误信息:
Could not resolve placeholder 'xxx' in value "${xxx}"
这是因为程序在初始化时找不到正确的配置文件导致无法读取其中的配置。
解决方案
解决该问题的方法有两种:
1. 指定配置文件路径
在 SpringApplication.run()
方法中指定 application.yml
配置文件的路径,例如:
@Configuration
@SpringBootApplication
public class MyApp {
public static void main(String[] args) {
SpringApplication app = new SpringApplication(MyApp.class);
app.setBannerMode(Banner.Mode.OFF);
app.run("--spring.config.location=file:/path/to/application.yml");
}
}
上述代码中,MyApp
为启动类,--spring.config.location
指定了配置文件的绝对路径。
2. 添加配置文件路径到 classpath 中
将 application.yml
配置文件放到 /src/main/resources
路径下即可。这是 Spring Boot 默认读取配置文件的路径,也是最简单的方式。如果你想自定义配置文件名,也可以在 @SpringBootApplication
注解中指定,例如:
@Configuration
@SpringBootApplication(
scanBasePackages = "com.xxx",
properties = {
"spring.config.name=custom",
"spring.config.location=classpath:/config/application.yml"
}
)
public class MyApp {
public static void main(String[] args) {
SpringApplication app = new SpringApplication(MyApp.class);
app.setBannerMode(Banner.Mode.OFF);
app.run(args);
}
}
上述代码中,spring.config.name
指定了自定义的配置文件名为 custom
,而 spring.config.location
则指定了配置文件的相对路径为 /config/application.yml
。
示例说明
示例一:指定配置文件路径
在 MyApp
启动类的 main
方法中,手动指定了 application.yml
文件的路径如下:
(...)
app.run("--spring.config.location=file:/path/to/application.yml");
示例二:添加配置文件路径到 classpath 中
将 application.yml
配置文件放到 /src/main/resources
路径下即可,无需其他额外配置。