全部学科
Python全栈
python
NodeJS全栈
nodejs
小程序首页
📝 1 篇文章 19 道配套习题

配置加载的底层规则和外部配置专题

专题说明

本专题深入剖析SpringBoot配置系统的底层架构,从配置优先级规则到Environment对象和PropertySource抽象,再到命令行参数、环境变量、配置文件加载顺序、Profile机制等,全面理解配置加载的核心原理。

学习目标

  1. 理解配置优先级完整规则
  2. 掌握Environment对象和PropertySource的作用
  3. 学会使用命令行参数和JVM参数覆盖配置
  4. 理解环境变量命名转换规则
  5. 掌握配置文件加载顺序和properties/yaml优先级
  6. 理解Profile特定配置的底层机制

学习内容

  • 配置优先级规则(17级优先级)
  • Environment对象与PropertySource抽象
  • 命令行参数覆盖(--key=value)
  • JVM系统属性(-Dkey=value)
  • 环境变量与命名转换
  • 配置文件加载顺序与位置
  • Profile特定配置机制
  • 随机值与占位符使用

学习建议

建议先理解配置优先级的完整规则,再学习Environment和PropertySource的底层抽象,然后掌握各种外部配置方式的使用,最后理解Profile机制。注意命令行参数优先级最高,环境变量命名转换规则为点号→下划线→全大写。

📝 发现内容有误?点击此处直接编辑

📝 配套习题(16 题)

1
单选题

使用命令行参数覆盖Spring Boot配置时,以下哪种格式是正确的?

A

--server.port=8081

B

server.port=8081

C

-Dserver.port=8081

D

spring.server.port=8081

2
单选题

在Spring Boot配置加载优先级中,命令行参数的优先级与其他配置源相比如何?

A

命令行参数优先级最低

B

命令行参数优先级介于配置文件和系统属性之间

C

命行参数优先级最高,可以覆盖任何其他配置

D

命令行参数与系统属性优先级相同

3
多选题

通过Spring Boot命令行参数,可以设置以下哪些内容?

A

应用配置属性(如server.port)

B

Spring Boot启动模式(如--debug)

C

主类参数(main方法接收的参数,不含--前缀)

D

JVM系统属性(如-Xmx512m)

4
填空题

若要禁用命令行参数对配置的覆盖功能,可以通过SpringApplicationBuilder调用 ________________________ 方法,或在SpringApplication上调用 ________________________ 方法。禁用后,命令行参数将不会被添加到Environment中。

5
单选题

若要通过环境变量设置Spring Boot的server.port属性,环境变量名应该写成什么格式?

A

SERVER_PORT

B

server.port

C

SERVER_PORT

D

SPRING_SERVER_PORT

6
单选题

Java系统属性(-D参数)与操作系统环境变量在配置加载中有什么区别?

A

系统属性优先级高于环境变量

B

环境变量优先级高于系统属性

C

两者优先级相同,后加载的覆盖先加载的

D

两者完全等效,无任何区别

7
多选题

使用操作系统环境变量配置Spring Boot应用有哪些优势?

A

跨平台兼容性好,Windows/Linux/macOS都支持

B

可以在不修改应用代码的情况下改变配置

C

适合容器化部署(Docker/K8s)场景

D

安全性比配置文件更高,不会意外提交到代码仓库

8
填空题

在Spring Boot应用中,可以通过注入 ___________ 接口来获取环境变量和系统属性,调用 ______________________ 方法可以获取配置值,该方法会按照优先级从高到低依次查找各个PropertySource。

9
单选题

Spring Boot默认会从以下哪个位置加载配置文件(优先级最高)?

A

项目根目录下的config子目录

B

项目根目录(与jar同级)

C

jar包内的classpath:/config/

D

jar包内的classpath根目录(/)

10
单选题

如果在同一位置同时存在application.properties和application.yaml,Spring Boot会如何处理?

A

只加载application.properties,忽略yaml文件

B

只加载application.yaml,忽略properties文件

C

两者都会加载,yaml中的配置覆盖properties中的同名配置

D

两者都会加载,properties中的配置覆盖yaml中的同名配置

11
多选题

Spring Boot支持以下哪些配置文件格式和位置?

A

application.properties

B

application.yaml / application.yml

C

application-{profile}.properties/yaml

D

config/application.properties(外部config目录)

12
多选题

Profile配置的底层加载机制涉及以下哪些组件?

A

ConfigFileApplicationListener(配置文件加载监听器)

B

Environment对象(存储所有配置源)

C

@Profile注解(条件化Bean注册)

D

PropertySource(单个配置源抽象)

13
填空题

Profile特定配置文件的命名格式为 ________________________________________________ ,其中{profile}替换为具体的Profile名称。当激活多个Profile时,按 ________ 的优先级加载,后声明的Profile配置覆盖先声明的同名配置。

14
单选题

在Spring Boot配置文件中,使用随机值配置my.secret=${random.value},这会生成什么类型的值?

A

随机整数

B

随机UUID字符串

C

随机长整数

D

随机字节数组

15
单选题

配置server.port=${random.int[10000,20000]}的效果是什么?

A

生成10000到20000之间的随机端口,闭区间(包含边界值)

B

生成10000到20000之间的随机端口,开区间(不含边界值)

C

生成10000或20000这两个值之一

D

配置语法错误,无法解析

16
判断题

配置my.timeout=${custom.timeout:3000}中,冒号后的3000是默认值,当custom.timeout未配置时使用。这种说法正确吗?

A

B

← 上一个专题 自定义Starter开发专题
下一个专题 → 项目打包基础部署专题

📝 发现内容有误?点击此处直接编辑

想查看更多习题和详细解析?
小程序提供完整的题库和详细解析

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库