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

Spring Bean管理专题

专题说明

本专题系统讲解Spring Bean的完整管理机制,包括Bean的定义方式、作用域类型、生命周期阶段、依赖注入模式等核心知识点。

学习目标

  1. 掌握Bean的多种定义方式(XML、注解、Java配置)
  2. 理解五种作用域及其适用场景
  3. 了解Bean生命周期的完整流程
  4. 掌握构造器注入和Setter注入的区别

学习内容

  • Bean定义:@Component、@Service、@Repository、@Controller
  • Bean作用域:singleton、prototype、request、session、application
  • Bean生命周期:实例化、属性赋值、初始化、销毁
  • 依赖注入:@Autowired、@Qualifier、@Resource

学习建议

重点理解singleton和prototype的区别,掌握@Autowired注解的使用规则。理解Bean生命周期有助于调试和扩展。

📝 配套习题(22 题)

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

prototype作用域的Bean在容器关闭时不会执行销毁回调方法。

A

B

2

使用标签可以为已定义的Bean添加别名,alias标签的name属性指定原Bean名称,alias属性指定别名。

A

B

3

设置abstract="true"的Bean不能被实例化,只能作为配置模板供其他Bean继承使用。

A

B

4

request和session作用域只能在Web应用环境中使用,在非Web环境中会导致异常。

A

B

5

@Autowired注解的required属性默认为true,当找不到匹配Bean时会抛出异常。若设置为false,则允许依赖为null。

A

B

单选题
6

Spring自动装配(Autowiring)的主要作用是?

A

自动创建Bean实例

B

自动注入依赖关系

C

自动配置Bean作用域

D

自动执行初始化方法

7

Spring Bean生命周期的正确顺序是?

A

实例化 → 属性注入 → 初始化回调 → 销毁回调

B

属性注入 → 实例化 → 初始化回调 → 销毁回调

C

实例化 → 初始化回调 → 属性注入 → 销毁回调

D

实例化 → 属性注入 → 销毁回调 → 初始化回调

8

关于prototype作用域的Bean,以下说法正确的是?

A

容器启动时就创建实例

B

每次getBean()都返回同一个实例

C

每次getBean()都创建新实例,Spring不管理完整生命周期

D

Spring会缓存prototype Bean的实例

9

如果一个Bean同时使用@PostConstruct、实现InitializingBean、并配置init-method,它们的执行顺序是?

A

init-method → InitializingBean → @PostConstruct

B

InitializingBean → init-method → @PostConstruct

C

@PostConstruct → InitializingBean → init-method

D

按配置顺序执行,无固定顺序

10

Spring Bean的默认作用域是什么?

A

prototype

B

singleton

C

request

D

session

11

当容器中存在多个同类型Bean时,@Autowired默认如何处理?

A

自动选择第一个Bean

B

抛出NoUniqueBeanDefinitionException异常

C

按Bean名称匹配

D

自动忽略注入

12

Spring Bean别名的主要作用是?

A

创建Bean的多个实例

B

为同一个Bean提供多个访问名称

C

改变Bean的作用域

D

实现Bean的继承关系

13

Spring Bean继承(parent属性)的主要作用是?

A

实现Java类的继承关系

B

复用已有Bean的配置信息

C

自动注入父Bean作为依赖

D

实现接口继承

多选题
14

关于singleton作用域的Bean,以下说法正确的是?

A

整个Spring容器中只存在一个实例

B

多线程并发访问需要考虑线程安全问题

C

容器关闭时会执行销毁回调

D

适合存储用户会话信息

15

@Autowired注解可以标注在哪些位置?

A

字段(成员变量)上

B

构造器上

C

普通方法上

D

Setter方法上

16

以下哪些方式可以定义Spring Bean的初始化逻辑?

A

使用@PostConstruct注解标注方法

B

实现InitializingBean接口的afterPropertiesSet()方法

C

在XML中配置init-method属性

D

在@Bean注解中指定initMethod属性

17

关于XML配置中autowire属性的各种模式,以下说法正确的是?

A

byName模式按属性名查找匹配的Bean

B

byType模式按属性类型查找,多个匹配会抛异常

C

constructor模式自动装配构造参数

D

autowire-candidate属性可设置Bean不参与自动装配

填空题
18

解决同类型多Bean冲突可使用____________注解指定Bean名称;标记首选Bean可使用____________注解;按名称自动装配可使用JSR-250标准的____________注解。

19

在XML配置中,子Bean通过____________属性指定父Bean;父Bean设置____________属性为true表示作为模板不实例化;子Bean可以____________父Bean的配置值。

20

使用注解方式配置Bean作用域为prototype,需要在类上添加____________注解;若要在XML中配置,则使用____________属性。

21

Spring Bean初始化回调使用____________注解,销毁回调使用____________注解,这两个注解来自____________

22

在XML中,Bean的____________属性可以定义多个名称/别名,多个名称使用________________________分隔。

参考答案
1.正确 2.正确 3.正确 4.正确 5.正确 6.B 7.A 8.C 9.C 10.B 11.B 12.B 13.B 14.A;B;C 15.A;B;C;D 16.A;B;C;D 17.A;B;C;D 18.@Qualifier;@Primary;@Resource 19.parent;abstract;覆盖 20.@Scope("prototype");scope="prototype" 21.@PostConstruct;@PreDestroy;Java标准库(javax.annotation) 22.name;逗号;分号
想在手机上练习这套专题?
使用微信卷王开发者小程序,打开首页顶部扫码功能识别二维码
← 上一个专题 Spring AOP高级专题
下一个专题 → Spring 事务专题
扫码体验小程序
加载中
想在手机上刷题学习?
使用微信卷王开发者小程序,打开首页顶部扫码功能识别二维码