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. 仅在应用程序上下文(ApplicationContext)中以@ConfigurationPropertiesBean的形式定义的随机生成属性;6. 应用程序jar包外部的application-{profile}.properties或YAML文件;7. 应用程序jar包内部的application-{profile}.properties或YAML文件;8. 应用程序jar包外部的application.properties或YAML文件;9. 应用程序jar包内部的application.properties或YAML文件;10. @PropertySource注解中的属性;11.
默认属性。
Step 2
Q:: 如何在Spring Boot中定义和加载自定义配置文件?
A:: 在Spring Boot中,可以通过在资源目录(如src/main/resources)中创建自定义的properties或YAML文件,并通过@PropertySource注解将其加载到Spring上下文中。例如:@PropertySource("classpath:custom.properties")。也可以通过spring.config.
location参数在启动应用时指定配置文件的位置。
Step 3
Q:: 什么是Spring Boot的Profile,如何使用它们?
A:: Spring Boot的Profile用于在不同的环境中使用不同的配置。可以通过在配置文件名称中添加profile名称(如application-dev.properties)来定义不同的Profile,并通过spring.profiles.active参数来激活特定的Profile。例如,在application.properties中设置spring.profiles.active=
dev,即可激活dev Profile。
Step 4
Q:: Spring Boot中@
Value注解的作用是什么?
A:: @Value注解用于从配置文件中注入值到Spring Bean的字段中。可以使用${propertyName}语法引用配置属性。例如:@Value("${my.property}") private String myProperty;
。