SpringBoot 06——文件加载顺序

博客主要提及了Java Spring Boot中内部文件和外部文件的加载顺序,不过官网相关内容未找到,留待后续补充。

内部文件加载顺序
请添加图片描述
外部文件加载顺序
官网自己没翻到,留个坑,看之后会不会填
请添加图片描述

### Spring Boot 运行时配置文件加载顺序 Spring Boot 的运行时配置文件加载机制遵循一定的优先级规则,这些规则决定了哪些属性会覆盖其他属性。以下是详细的加载顺序: #### 配置文件加载顺序 1. **命令行参数** 命令行参数具有最高优先级,可以用来动态修改应用的行为。例如,在启动应用程序时可以通过 `--server.port=9090` 来设置端口[^1]。 2. **来自 java:comp/env 的 JNDI 属性** 如果项目部署在支持 JNDI 的环境中(如 Tomcat 或 WebLogic),JNDI 中定义的属性会被加载并应用于配置中[^3]。 3. **Java 系统属性 (System.getProperties())** Java 虚拟机启动时传递的 `-D` 参数也会被解析为系统属性的一部分,并参与配置加载过程。 4. **操作系统环境变量** 操作系统的环境变量同样会影响 Spring Boot 应用程序的配置行为。需要注意的是,环境变量通常以大写字母表示,并通过下划线 `_` 替代点号 `.`。 5. **RandomValuePropertySource 配置的 random.* 属性** Spring Boot 提供了一种随机值注入的方式,比如 `random.int`, `random.long`, 和 `random.uuid`,它们可以在测试或其他场景中生成临时数据。 6. **打包 jar 外部的应用程序配置文件 (`application.properties` 或 `application.yml`)** - 当前目录下的 `/config` 文件夹内的配置文件。 - 当前目录下的配置文件。 7. **打包 jar 内部的应用程序配置文件 (`application.properties` 或 `application.yml`)** - 类路径根目录下的 `/config` 文件夹内的配置文件。 - 类路径根目录下的配置文件。 8. **@Configuration 注解类上的 @PropertySource** 开发者可以通过自定义注解来引入额外的 `.properties` 文件,这种方式允许更灵活地管理外部化配置。 9. **默认属性 (由 SpringApplication.setDefaultProperties 指定)** 默认属性是在没有任何显式配置的情况下使用的后备选项。开发者也可以通过编程方式调整这一部分的内容[^3]。 --- #### 示例代码展示加载逻辑 下面是一个简单的例子,演示如何利用不同的配置源影响最终的结果: ```java @SpringBootApplication public class DemoApplication { public static void main(String[] args) { System.setProperty("my.custom.property", "value-from-system-property"); SpringApplication.run(DemoApplication.class, "--my.custom.property=value-from-command-line"); } @Bean public CommandLineRunner commandLineRunner(Environment env) { return args -> { String value = env.getProperty("my.custom.property"); System.out.println("Loaded property value: " + value); }; } } ``` 在这个案例中,“my.custom.property”的实际取值取决于不同来源之间的优先级关系。如果存在冲突,则按照上述列表中的次序决定哪个值生效[^1]。 --- #### 注意事项 - 不同类型的配置文件可能共存于同一个项目里,但只有符合特定条件的那个才会被激活。例如,当设置了 `spring.profiles.active=dev` 后,仅对应开发环境的 profile-specific 配置会被读取。 - 对于 YAML 格式的多文档块结构,其处理方法类似于 profiles 功能——即每个 document 可能代表一种独立的状态或模式切换。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值