Spring Boot 在启动时会加载多个配置文件,而不同类型的配置文件有不同的优先级。下面将分别介绍 Spring Boot 配置文件的优先级以及如何加载配置文件。
Spring Boot 配置文件的优先级
Spring Boot 支持多种类型的配置文件,这些类型的配置文件按照以下优先级进行加载:
bootstrap.properties
或bootstrap.yml
。application.properties
或application.yml
。- 当前环境下的
application-{profile}.properties
或application-{profile}.yml
。其中,“{profile}”为 Spring Boot 配置文件中定义的激活的 Profile 名称,默认为default
。 - 其他自定义配置文件,例如
application-test.properties
或application-test.yml
。
以上配置文件中的后面的配置文件会覆盖前面的配置文件中的相同配置选项。
配置文件的加载方式
Spring Boot 支持多种方式加载配置文件,下面将针对不同加载方式进行详细说明:
1. 通过 Environment 对象加载配置文件
可以通过 Environment
对象加载配置文件,示例代码如下:
@SpringBootApplication
public class Application {
public static void main(String[] args) {
ConfigurableApplicationContext context = SpringApplication.run(Application.class, args);
Environment env = context.getEnvironment();
String property = env.getProperty("spring.datasource.url");
System.out.println(property);
}
}
通过 getenv()
方法获取到 Environment
对象之后,可以通过 getProperty()
方法获取指定的配置项的值。在上述示例中获取到了数据库 URL 配置项的值。
2. 通过 @Value 注解注入配置项的值
在 Spring Boot 中,可以使用 @Value
注解将配置项的值注入到类或方法中。示例代码如下:
@Component
public class MyBean {
@Value("${my.configuration.property}")
private String myProperty;
// ...
}
在上述示例中,使用 @Value
注解将 my.configuration.property 配置项的值注入到 myProperty
字段中。在其他使用 MyBean
类的地方,可以通过访问 myProperty
字段获取到该配置项的值。
示例说明
以下两个示例将分别演示 Spring Boot 配置文件的优先级以及配置加载方式的使用。
示例一
假设我们有以下配置文件:
application.properties
:
spring.datasource.url=jdbc:mysql://localhost:8080/mydatabase
spring.datasource.username=root
application-dev.properties
:
spring.datasource.url=jdbc:mysql://localhost:8080/mydatabase_dev
在上述示例中,application-dev.properties
配置文件会覆盖 application.properties
配置文件中的 spring.datasource.url
配置项,使其值变为 jdbc:mysql://localhost:8080/mydatabase_dev
。
示例二
假设我们有以下配置文件:
application.yml
:
my.configuration.property: Hello World!
我们可以在任意一个类或方法中通过使用 @Value
注解将该配置项的值注入到其中。示例代码如下:
@Component
public class MyBean {
@Value("${my.configuration.property}")
private String myProperty;
public void printMyProperty() {
System.out.println("My Property Value: " + myProperty);
}
}
在上述示例中,使用 @Value
注解将 my.configuration.property
配置项的值注入到 myProperty
字段中。在 printMyProperty()
方法中打印了该配置项的值。在其他使用 MyBean
类的地方,可以调用 printMyProperty()
方法获取到该配置项的值。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:SpringBoot配置加载,各配置文件优先级对比方式 - Python技术站