全部学科
Python全栈
python
NodeJS全栈
nodejs

配置加载的底层规则和外部配置专项测试

19 题 40 分钟 难度:★★

考察知识点

  • 配置源加载优先级顺序
  • 外部化配置方式(命令行、环境变量等)
  • 配置覆盖与合并规则
  • 配置文件位置与命名规范
💡 参考答案在文末
判断题
1

当激活了dev Profile时,application-dev.properties中的配置优先级高于application.properties中的同名配置。这种说法正确吗?

A

B

2

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

A

B

单选题
3

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

A

项目根目录下的config子目录

B

项目根目录(与jar同级)

C

jar包内的classpath:/config/

D

jar包内的classpath根目录(/)

4

以下哪种方式不能激活Spring Boot的Profile?

A

命令行参数:--spring.profiles.active=dev

B

系统属性:-Dspring.profiles.active=dev

C

环境变量:SPRING_PROFILES_ACTIVE=dev

D

在配置文件中使用profile=dev

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

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

A

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

B

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

C

生成10000或20000这两个值之一

D

配置语法错误,无法解析

8

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

A

命令行参数优先级最低

B

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

C

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

D

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

9

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

A

--server.port=8081

B

server.port=8081

C

-Dserver.port=8081

D

spring.server.port=8081

10

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

A

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

B

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

C

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

D

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

11

在application-dev.properties中配置spring.profiles.include=debug,metrics,这会产生什么效果?

A

替换当前激活的Profile为debug和metrics

B

在dev Profile基础上额外激活debug和metrics Profile

C

仅当debug和metrics Profile被激活时才加载dev Profile

D

忽略该配置,include属性已废弃

12

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

A

随机整数

B

随机UUID字符串

C

随机长整数

D

随机字节数组

多选题
13

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

A

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

B

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

C

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

D

JVM系统属性(如-Xmx512m)

14

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

A

application.properties

B

application.yaml / application.yml

C

application-{profile}.properties/yaml

D

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

15

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

A

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

B

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

C

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

D

PropertySource(单个配置源抽象)

16

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

A

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

B

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

C

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

D

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

填空题
17

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

18

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

19

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

参考答案
1.正确 2.正确 3.A 4.D 5.C 6.A 7.A 8.C 9.A 10.D 11.B 12.B 13.A;B;C 14.A;B;C;D 15.A;B;C;D 16.A;B;C;D 17.Environment;getProperty(String key 18.application-{profile}.properties;application-{profile}.yaml;声明顺序 19.setAddCommandLineProperties(false;setAddCommandLineProperties(false
想在手机上练习这套试卷?
使用微信卷王开发者小程序,打开首页顶部扫码功能识别二维码
← 上一套试卷 自定义Starter开发专项测试
下一套试卷 → 项目打包基础部署专项测试
扫码体验小程序
加载中
想在手机上刷题学习?
使用微信卷王开发者小程序,打开首页顶部扫码功能识别二维码