全部学科
NodeJS全栈
nodejs
Python全栈
python
小程序首页

底层启动源码剖析专项测试

20 题 45 分钟 难度:

考察知识点

  • SpringApplication启动流程
  • Environment准备与属性源加载
  • ApplicationContext创建与刷新
  • Bean生命周期关键节点
1
多选题

在Spring Boot启动过程中,Environment对象的属性源(PropertySource)加载顺序是怎样的?

A

命令行参数优先级最高,最先加载

B

application.properties/yml文件在系统环境变量之后加载

C

ServletConfig和ServletContext属性在启动后期才加入

D

随机数属性源(random.*)最早加载

E

@PropertySource注解配置的属性源优先级最低

2
单选题

Spring Boot启动时会根据应用类型创建不同的Environment实现类,对于标准的Web应用(SpringApplicationBuilder.web(WebApplicationType.SERVLET)),创建的是哪种Environment?

A

StandardEnvironment

B

ServletEnvironment

C

StandardServletEnvironment

D

ReactiveEnvironment

3
填空题

Spring Boot中Environment对象获取属性的方法包括:获取单一属性使用________________________2_!!方法,获取必需属性(不存在抛异常)使用!!3_!!方法。

4
判断题

Spring Boot通过ConfigurationPropertySources.attach()方法将原始PropertySource转换为ConfigurationPropertySource,提供了统一的属性访问API,支持松散绑定(relaxed binding)。

A

B

5
多选题

在Spring Boot启动过程中,以下哪些事件会在ApplicationContext创建之前发布?

A

ApplicationStartingEvent

B

ApplicationEnvironmentPreparedEvent

C

ApplicationPreparedEvent

D

ApplicationContextInitializedEvent

E

ApplicationStartedEvent

6
单选题

关于Spring Boot的监听器机制,以下描述正确的是?

A

ApplicationListener通过META-INF/spring.factories注册,监听所有Spring事件

B

SpringApplicationRunListener只能监听Spring Boot启动事件,不能监听Spring事件

C

EventPublishingRunListener将SpringApplicationRunListener事件转发给ApplicationListener

D

自定义监听器必须继承SpringApplicationRunListener

7
填空题

SpringApplicationRunListener接口定义了启动流程的关键回调方法:启动开始时调用________________________2_!!方法,Context刷新完成时调用!!3_!!方法。

8
判断题

Spring Boot的ApplicationListener执行顺序可以通过实现Ordered接口或使用@Order注解来控制,默认情况下监听器按注册顺序执行。

A

B

9
多选题

关于Spring ApplicationContext的refresh()方法执行流程,以下哪些描述是正确的?

A

prepareRefresh()阶段会初始化PropertySources并验证必需属性

B

obtainFreshBeanFactory()阶段创建新的BeanFactory实例

C

invokeBeanFactoryPostProcessors()阶段执行BeanFactoryPostProcessor处理Bean定义

D

registerBeanPostProcessors()阶段注册BeanPostProcessor,但这些处理器还未对Bean生效

E

finishRefresh()阶段会初始化LifecycleProcessor并发布ContextRefreshedEvent

10
多选题

在finishBeanFactoryInitialization阶段,Bean实例化的顺序遵循以下哪些规则?

A

BeanPostProcessor类型的Bean在其他普通Bean之前实例化

B

@DependsOn注解指定的依赖Bean优先实例化

C

SmartInitializingSingleton的afterSingletonsInstantiated()在所有单例Bean实例化后执行

D

惰性初始化(@Lazy)的Bean不会在该阶段实例化

E

FactoryBean类型的Bean会先实例化其生产的Bean

11
单选题

Spring Boot启动时根据webApplicationType创建不同的ApplicationContext,对于WebApplicationType.SERVLET类型,创建的ApplicationContext是?

A

GenericApplicationContext

B

AnnotationConfigApplicationContext

C

AnnotationConfigServletWebServerApplicationContext

D

ServletWebServerApplicationContext

12
填空题

ApplicationContext关闭时调用________________________2_!!方法,带有@PreDestroy注解的方法也会被执行,最后发布!!3_!!事件。

13
判断题

ApplicationContext的onRefresh()方法是模板方法,子类可以重写该方法执行特定的初始化逻辑,ServletWebServerApplicationContext在此方法中启动内嵌Web容器。

A

B

14
多选题

Spring Boot启动过程中,Bean定义可以通过以下哪些方式加载到BeanFactory?

A

@Configuration类通过ConfigurationClassPostProcessor解析注册

B

META-INF/spring.factories中配置的EnableAutoConfiguration类自动加载

C

@ComponentScan扫描指定包下的@Component类注册

D

@Import注解导入的Configuration类或ImportSelector返回的类注册

E

XML配置文件通过XmlBeanDefinitionReader加载

15
单选题

关于BeanDefinition的核心属性,以下描述错误的是?

A

scope属性控制Bean的作用域,默认为singleton

B

lazyInit属性控制是否延迟初始化,默认为false

C

primary属性标记首选Bean,当有多个同类型候选时优先选择

D

dependsOn属性指定Bean实例化顺序,必须在目标Bean实例化之前

16
填空题

BeanDefinitionRegistry接口提供了注册Bean定义的核心方法:注册新Bean定义使用________________________2_!!方法,判断Bean定义是否存在使用!!3_!!方法。

17
判断题

ConfigurationClassPostProcessor是一个BeanFactoryPostProcessor,它在Bean实例化之前执行,负责解析@Configuration类、处理@Bean方法、处理@Import注解等,将Bean定义注册到BeanFactory。

A

B

18
多选题

关于Spring Boot的自动配置条件注解,以下哪些描述是正确的?

A

@ConditionalOnClass在类路径存在指定类时匹配成功

B

@ConditionalOnMissingBean在BeanFactory不存在指定类型Bean时匹配成功

C

@ConditionalOnProperty默认require=false,属性不存在时也匹配成功

D

@ConditionalOnWebApplication判断当前是否为Web应用环境

E

所有条件注解通过Condition接口实现,Spring Boot提供了多种Condition实现类

19
多选题

Spring Boot自动配置类的条件注解评估过程中,以下哪些描述是正确的?

A

条件注解评估在ConfigurationClassPostProcessor处理阶段执行

B

SpringBootCondition记录每个条件的匹配结果用于诊断报告

C

@ConditionalOnBean在Bean实例化之前评估,可能因Bean未注册而误判

D

AutoConfigurationSorter根据@AutoConfigureOrder和@AutoConfigureBefore/After排序

E

所有条件注解都必须同时匹配,配置类才会被加载

20
单选题

关于@ConditionalOnBean注解的使用,以下描述正确的是?

A

它检查BeanFactory中已实例化的Bean

B

它可以安全地用于自动配置类判断其他自动配置类是否生效

C

它只检查当前ApplicationContext,不检查父容器

D

它在Bean实例化阶段执行,确保Bean已经存在

← 上一个试卷 内置容器基础用法专项测试
下一个试卷 → 核心配置文件使用专项测试

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

想参加完整模拟考试?
小程序提供计时考试、自动评分和详细解析

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

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