springboot配置加载顺序
时间: 2023-11-15 19:56:58 浏览: 109
Spring Boot 的配置加载顺序如下:
1. 命令行参数
2. 来自 `SPRING_APPLICATION_JSON` 环境变量或 `application.json` 的属性
3. Java 系统属性(System.getProperties())
4. 操作系统环境变量
5. `application-{profile}.properties` 或 `application.yml` 文件中的属性,其中 `{profile}` 是激活的 profile 名称
6. `application.properties` 或 `application.yml` 文件中的属性
7. 在打包的 jar 文件外部的 `application-{profile}.properties` 或 `application.yml` 文件中的属性,其中 `{profile}` 是激活的 profile 名称
8. 在打包的 jar 文件外部的 `application.properties` 或 `application.yml` 文件中的属性
9. 默认属性(使用 `SpringApplication.setDefaultProperties` 指定)
相关问题
请写出SpringBoot配置加载顺序
在Spring Boot中,配置文件的加载顺序如下:
1. 命令行参数:可以通过命令行参数指定配置属性,例如:`java -jar myproject.jar --my.property=value`。
2. 来自java:comp/env的JNDI属性:如果有可用的JNDI属性源,则加载该属性。
3. Java系统属性:可以通过System.getProperties()方法获取的属性。
4. 操作系统环境变量:可以通过System.getenv()方法获取的属性。
5. RandomValuePropertySource:该属性源用于生成一个随机值,例如在开发环境中生成一个随机的端口号。
6. 配置文件:Spring Boot支持多种不同格式的配置文件,如application.properties、application.yml等。这些配置文件按照优先级从高到低进行加载,通常会加载application.properties或application.yml作为主要配置文件。
7. 配置文件中的profile-specific文件:根据激活的profile加载对应的配置文件,例如application-dev.properties或application-dev.yml。
8. 外部配置文件:可以通过指定`spring.config.name`和`spring.config.location`属性来加载外部的配置文件。
9. 默认属性:Spring Boot提供了一些默认的属性值,可以在需要时使用。
以上是Spring Boot中配置文件的加载顺序,开发者可以根据需要进行配置和修改。
springboot启动加载顺序
Spring Boot应用程序的启动流程是一个精心设计的过程,主要包括以下几个步骤:
1. **初始化环境**:首先,Spring Boot会检查系统的环境变量和命令行参数,如`JAVA_OPTS`,以及应用目录下的`application.properties`或`application.yml`文件,设置基础配置。
2. **启动类加载**:找到包含主类的JAR包,并通过类路径加载这个类。Spring Boot会寻找`@SpringBootApplication`注解的类作为主入口。
3. **应用上下文准备**:Spring Boot的核心工具`SpringApplication`会开始构建应用程序上下文(ApplicationContext)。这个过程中,它会解析配置,注册自动配置组件,以及加载依赖。
4. **容器初始化**:Spring框架初始化Spring IoC容器,也就是BeanFactory或ApplicationContext,创建并装配所有的bean。
5. **bean实例化与依赖注入**:根据应用程序上下文,Spring按照依赖关系创建和初始化bean,包括其他bean的依赖项。
6. **生命周期回调**:每个bean在创建后都会经历各种生命周期回调,例如`afterSingletonsInstantiated()`和`afterPropertiesSet()`。
7. **启动服务**:最后,调用主类的`run()`方法,如果有特定的`CommandLineRunner`或`ApplicationRunner`,它们会在启动完成后运行。
8. **关闭日志和监听器**:启动完成后,日志框架和其他监听器会被关闭,整个启动过程结束。
阅读全文