Spring Boot配置的加载流程详细分析
Spring Boot是一个流行的Java框架,可以帮助开发人员快速构建和部署应用程序。在Spring Boot中,配置文件是非常重要的一部分,它们可以帮助我们配置应用程序的各种属性和行为。在本文中,我们将详细讲解Spring Boot配置的加载流程。
配置文件的加载顺序
Spring Boot支持多种类型的配置文件,例如properties、yaml等。在加载配置文件时,Spring Boot会按照以下顺序加载:
- 命令行参数
- SPRING_APPLICATION_JSON
- 系统环境变量
- JNDI
- Java系统属性
- 配置文件
- 当前目录下的config子目录
- 当前目录
- classpath下的config包
- classpath根目录
在上面的顺序中,后面的配置文件会覆盖前面的配置文件。例如,如果在当前目录下的config子目录中有一个名为application.properties的文件,它会覆盖classpath下的config包中的application.properties文件。
配置文件的优先级
在Spring Boot中,配置文件的优先级是非常重要的。如果有多个配置文件,它们的优先级如下:
- 命令行参数
- SPRING_APPLICATION_JSON
- 系统环境变量
- JNDI
- Java系统属性
- 配置文件
- 当前目录下的config子目录
- 当前目录
- classpath下的config包
- classpath根目录
在上面的优先级中,后面的配置文件会覆盖前面的配置文件。例如,如果在当前目录下的config子目录中有一个名为application.properties的文件,它会覆盖classpath下的config包中的application.properties文件。
示例1
以下是一个完整的示例,演示如何使用Spring Boot加载配置文件:
- 在当前目录下创建一个名为application.properties的文件,其中包含以下内容:
properties
server.port=8080
- 在当前目录下创建一个名为config的子目录,并在其中创建一个名为application.properties的文件,其中包含以下内容:
properties
server.port=9090
- 创建一个名为MyApplication的Spring Boot应用程序,并在其中添加以下代码:
```java
@SpringBootApplication
public class MyApplication {
public static void main(String[] args) {
SpringApplication.run(MyApplication.class, args);
}
@Value("${server.port}")
private int port;
@GetMapping("/")
public String home() {
return "Hello World! Running on port " + port;
}
}
```
- 运行应用程序,并访问http://localhost:8080/和http://localhost:9090/,分别查看应用程序的输出。
在上面的示例中,我们创建了一个名为MyApplication的Spring Boot应用程序,并在其中添加了一个名为“home”的方法。在这种情况下,我们使用@Value注解将server.port属性注入到port变量中。在运行应用程序时,Spring Boot会按照上述顺序加载配置文件,并根据优先级确定应用程序的端口号。在这种情况下,应用程序的端口号为8080或9090,具体取决于哪个配置文件被加载。
示例2
以下是另一个示例,演示如何使用Spring Boot加载多个配置文件:
- 在classpath下的config包中创建一个名为application.properties的文件,其中包含以下内容:
properties
message=Hello from application.properties
- 在classpath根目录下创建一个名为application-dev.properties的文件,其中包含以下内容:
properties
message=Hello from application-dev.properties
- 创建一个名为MyApplication的Spring Boot应用程序,并在其中添加以下代码:
```java
@SpringBootApplication
public class MyApplication {
public static void main(String[] args) {
SpringApplication.run(MyApplication.class, args);
}
@Value("${message}")
private String message;
@GetMapping("/")
public String home() {
return message;
}
}
```
- 运行应用程序,并访问http://localhost:8080/和http://localhost:8080/?spring.profiles.active=dev,分别查看应用程序的输出。
在上面的示例中,我们创建了一个名为MyApplication的Spring Boot应用程序,并在其中添加了一个名为“home”的方法。在这种情况下,我们使用@Value注解将message属性注入到message变量中。在运行应用程序时,Spring Boot会按照上述顺序加载配置文件,并根据优先级确定应用程序的message属性。在这种情况下,应用程序的message属性为“Hello from application.properties”或“Hello from application-dev.properties”,具体取决于哪个配置文件被加载。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:SpringBoot配置的加载流程详细分析 - Python技术站