下面就是关于“简单了解springboot加载配置文件顺序”的详细攻略。
配置文件的加载顺序
SpringBoot应用在启动时会从多个地方读取配置信息,这些配置信息可能会来自于YAML文件、properties文件、环境变量、命令行参数等。这些配置信息的加载顺序是比较重要的,因为如果在加载配置信息时发生了冲突,就会影响到应用的运行。
根据SpringBoot官方文档的描述,SpringBoot会按照以下顺序来加载配置信息:
- 在 SpringApplication 引导类所在的目录下的
/config
文件夹中查找。 - 在类路径中查找,包括 jar 包中的
META-INF/spring.factories
文件中SpringApplicationInitializer
所引用的配置文件以及总类路径下的application.properties(application.yml)
文件。 - 通过
spring.config.name
和spring.config.location
确定的指定位置来加载。
上面的顺序是从高到低的顺序,也就是说,如果在高优先级的目录下找到了配置文件,就不会继续往下寻找了。
接下来我们来通过两个示例来详细解释一下这个加载顺序。
示例一
假设我们的项目结构如下:
.
├── src
│ ├── main
│ │ ├── java
│ │ ├── resources
│ │ │ ├── application.properties
│ │ │ └── config
│ │ │ └── application.yml
同样的配置在 application.properties
和 application.yml
中都存在:
在 application.properties
中的配置:
name=hello
在 application.yml
中的配置:
name: world
那么根据以上的加载顺序,应用启动的时候会加载优先级高的 /config
目录下的 application.yml
文件,因此,name
的值为"world",你可以在任意一个地方通过@Value("${name}")
注解来获取这个值。
示例二
接下来,我们考虑另外一种情况:
假设我们的项目结构如下:
.
└── myproject.jar
├── application.yml
└── config
└── application.properties
同样的配置在 application.properties
和 application.yml
中都存在:
在 application.properties
中的配置:
name=hello
在 application.yml
中的配置:
name: world
由于 /config
目录下的 application.properties
优先级更高,因此启动的时候优先采用name=hello
的配置,而不是name=world
的配置。
总结
综上所述,SpringBoot会根据上述的优先级来加载并覆盖相应的配置文件,由于配置文件采用了不同的格式,因此,我们可以采用不同的配置文件来适应不同的需求,在实际的开发工作中应该充分了解这种加载顺序,并且灵活地应用到我们的项目中去。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:简单了解springboot加载配置文件顺序 - Python技术站