SpringBoot-配置加载顺序
Spring Boot 配置加载顺序通常遵循以下优先级规则:
- 命令行参数。
- 来自
SPRING_APPLICATION_JSON
环境变量的内联JSON配置。 - 当前目录下的
application.properties
或application.yml
文件。 - 外部配置文件,如
application.properties
或application.yml
放在配置目录下。 - 在
SPRING_CONFIG_LOCATION
环境变量中指定的外部配置文件。 - 入口点的
spring.config.location
参数。 - 应用程序的
resource
目录中的application.properties
或application.yml
文件。 - 应用程序的
resource
目录中的application.properties
或application.yml
文件。 @PropertySource
注解指定的配置。- 默认属性。
这个加载过程是由SpringApplication类中的prepareEnvironment
方法来控制的,它会按照上述顺序依次加载配置。
如果要改变默认的配置加载顺序,可以通过编程方式来指定配置文件的位置,例如:
@SpringBootApplication
public class MySpringBootApplication {
public static void main(String[] args) {
SpringApplication app = new SpringApplication(MySpringBootApplication.class);
app.setAdditionalProfiles("dev");
app.run(args);
}
}
在这个例子中,我们通过 setAdditionalProfiles
方法添加了一个额外的配置文件后缀名为 dev
,Spring Boot 会尝试加载带有 application-dev.properties
或 application-dev.yml
的配置文件。
另外,你可以通过设置 spring.config.location
或 spring.config.import
属性来改变配置文件的默认位置。例如,在命令行中启动应用程序时使用:
java -jar myproject.jar --spring.config.location=file:/path/to/config/
这将会让Spring Boot应用程序加载指定路径下的配置文件。
注意,在实际开发中,通常推荐使用 Spring Boot 提供的默认配置加载顺序,这样可以保持配置的灵活性和可维护性。如果需要覆盖或添加特定的配置,可以在 application.properties
或 application.yml
文件中进行,或者在不同的配置文件中进行分模块管理。
评论已关闭