全部学科
Python全栈
python
NodeJS全栈
nodejs
📝 1 篇文章 20 道配套习题

Spring 容器扩展点专题

专题说明

本专题讲解Spring IoC容器提供的扩展机制,包括BeanPostProcessor、BeanFactoryPostProcessor、Aware接口、InitializingBean等核心扩展点。

学习目标

  1. 理解BeanPostProcessor的工作时机和作用
  2. 掌握BeanFactoryPostProcessor的使用场景
  3. 了解各类Aware接口的功能
  4. 学会自定义容器扩展点

学习内容

  • BeanPostProcessor:Bean实例化后的处理
  • BeanFactoryPostProcessor:Bean定义阶段的处理
  • Aware接口:获取容器资源的回调
  • InitializingBean/DisposableBean:生命周期回调

学习建议

容器扩展点是Spring框架的精髓所在,理解这些扩展点有助于深入理解Spring工作机制,也是开发框架级组件的基础。

📝 配套习题(20 题)

💡 参考答案在文末
判断题
1

Spring提供了多个Aware子接口,如BeanNameAware可以获取Bean的名称,EnvironmentAware可以获取环境配置信息。

A

B

2

BeanFactoryAware的setBeanFactory()方法在Bean的属性填充之后、初始化方法(如@PostConstruct)执行之前被调用。

A

B

3

使用BeanFactoryAware获取BeanFactory引用是Spring推荐的依赖获取方式,应优先于@Autowired注解使用。

A

B

4

SmartInitializingSingleton的afterSingletonsInstantiated()方法在BeanPostProcessor处理完成后才执行。

A

B

5

InitializingBean接口定义了afterPropertiesSet()方法,该方法在Bean的所有属性被设置之后自动调用,用于执行初始化逻辑。

A

B

6

DisposableBean接口的destroy()方法在Bean被销毁时调用,用于释放资源,如关闭数据库连接、文件句柄等。

A

B

7

当一个Bean同时使用@PostConstruct注解和实现InitializingBean接口时,@PostConstruct方法先于afterPropertiesSet()方法执行。

A

B

8

SmartInitializingSingleton接口只适用于单例作用域的Bean,原型作用域的Bean不会触发该接口的方法调用。

A

B

9

Aware接口的方法调用发生在Bean的属性填充阶段,而不是初始化阶段。

A

B

10

Aware接口是Spring提供的一个标记接口,本身不定义任何方法,用于表明实现类需要从Spring容器获取某种资源。

A

B

11

BeanFactoryAware接口允许Bean获取对其所在BeanFactory的引用,从而可以以编程方式查找或操作其他Bean。

A

B

单选题
12

Spring设计Aware接口系列的主要目的是?

A

提供Bean之间的通信机制

B

让Bean能够感知并获取Spring容器的内部资源

C

实现Bean的自动装配功能

D

提供Bean的配置管理能力

13

ApplicationListener接口在Spring事件机制中的作用是?

A

定义事件的类型

B

监听并处理特定类型的ApplicationEvent

C

发布事件到容器

D

创建自定义事件对象

14

以下哪个是Spring容器启动完成时发布的内置事件?

A

ContextStartedEvent

B

ContextRefreshedEvent

C

ContextClosedEvent

D

ContextStoppedEvent

15

创建自定义Spring事件需要继承哪个类?

A

java.util.EventObject

B

ApplicationEvent

C

EventListener

D

ApplicationListener

16

SmartInitializingSingleton接口的afterSingletonsInstantiated()方法在什么时候被调用?

A

每个Bean实例化后立即调用

B

所有单例Bean实例化完成后调用一次

C

容器启动时调用

D

容器关闭时调用

17

SmartInitializingSingleton与InitializingBean的主要区别是?

A

SmartInitializingSingleton只适用于单例Bean

B

InitializingBean在每个Bean初始化时调用,SmartInitializingSingleton全局只调用一次

C

SmartInitializingSingleton在InitializingBean之前执行

D

InitializingBean是注解,SmartInitializingSingleton是接口

18

InitializingBean接口定义的初始化方法名称是?

A

init()

B

initialize()

C

afterPropertiesSet()

D

onInit()

19

BeanFactoryAware接口中定义的方法名称是?

A

setFactory(BeanFactory factory)

B

setBeanFactory(BeanFactory beanFactory)

C

injectBeanFactory(BeanFactory beanFactory)

D

configureBeanFactory(BeanFactory beanFactory)

多选题
20

在Spring中监听事件可以通过哪些方式实现?

A

实现ApplicationListener接口

B

使用@EventListener注解

C

使用@TransactionalEventListener注解

D

实现Observer接口

参考答案
1.正确 2.正确 3.错误 4.正确 5.正确 6.正确 7.正确 8.正确 9.错误 10.正确 11.正确 12.B 13.B 14.B 15.B 16.B 17.B 18.C 19.B 20.A;B;C
想在手机上练习这套专题?
使用微信卷王开发者小程序,打开首页顶部扫码功能识别二维码
← 上一个专题 Spring 事务专题
下一个专题 → Spring 性能调优专题
扫码体验小程序
加载中
想在手机上刷题学习?
使用微信卷王开发者小程序,打开首页顶部扫码功能识别二维码