SpringBoot面试题, Spring Boot 配置文件加载优先级你知道吗?
SpringBoot面试题, Spring Boot 配置文件加载优先级你知道吗?
QA
Step 1
Q:: Spring Boot 配置文件加载的优先级是怎样的?
A:: Spring Boot 配置文件的加载优先级是按以下顺序从高到低进行的:1) 命令行参数 2) 来自 java:comp/env 的 JNDI 属性 3) Java 系统属性(System.getProperties()) 4) 操作系统环境变量 5) Jar 包外部的 application-{profile}.properties 或 application-{profile}.yml 文件 6) Jar 包内部的 application-{profile}.properties 或 application-{profile}.yml 文件 7) Jar 包外部的 application.properties 或 application.yml 文件 8) Jar 包内部的 application.properties 或 application.yml 文件 9) @PropertySource 注解的配置文件 10)
默认属性。这个优先级顺序确保了不同环境下的配置可以覆盖默认的配置,从而提供灵活性。
Step 2
Q:: 如何在 Spring Boot 中指定使用不同的配置文件?
A:: 在 Spring Boot 中,可以通过以下几种方式来指定使用不同的配置文件:1)
使用命令行参数 --spring.profiles.active=profileName
2) 在 application.properties 或 application.
yml 文件中设置 spring.profiles.active=profileName
3)
使用环境变量 SPRING_PROFILES_ACTIVE=profileName
4)
在 Java 代码中使用 SpringApplication.setAdditionalProfiles()
方法。通过这些方式可以动态切换环境配置,比如开发环境、测试环境和生产环境。
Step 3
Q:: Spring Boot 中 @ConfigurationProperties 注解的作用是什么?
A:: @ConfigurationProperties 注解用于将配置文件中的属性映射到一个 Java 类中。通过将类标注为 @ConfigurationProperties,并指定前缀 prefix,可以将前缀下的配置属性直接映射到该类的字段中。这在处理复杂配置时非常有用,尤其是当有多个相关配置项时,避免了在代码中到处使用 @
Value 注解来手动注入属性。