基本信息
文件名称:Spring核心知识点笔试题及答案.docx
文件大小:30.5 KB
总页数:6 页
更新时间:2025-09-25
总字数:约5.29千字
文档摘要

Spring核心知识点笔试题及答案

一、选择题(每题4分,共20分)

下列关于SpringBean作用域的说法,错误的是()

A.singleton是默认作用域,容器中仅存在一个Bean实例

B.prototype作用域下,每次获取Bean都会创建新实例

C.request作用域的Bean,在整个HTTP请求期间仅创建一次

D.session作用域的Bean,可在多个浏览器会话间共享

SpringAOP中,用于“在目标方法执行后,无论是否抛出异常都执行”的通知类型是()

A.@BeforeB.@AfterC.@AfterReturningD.@AfterThrowing

下列哪种依赖注入方式,更适合依赖项较多的场景()

A.构造器注入B.setter注入C.字段注入(@Autowired直接注在字段上)D.接口注入

关于Spring事务传播行为,若当前没有事务,就新建一个事务;若已有事务,就加入当前事务,该传播行为是()

A.REQUIREDB.REQUIRES_NEWC.SUPPORTSD.NOT_SUPPORTED

下列哪个注解,不能用于将类标识为Spring管理的Bean()

A.@ComponentB.@ServiceC.@ControllerD.@Autowired

二、简答题(每题10分,共40分)

简述SpringIOC容器的核心作用,以及BeanFactory和ApplicationContext的主要区别。

说明SpringBean的完整生命周期(从创建到销毁),并列举2种初始化阶段的实现方式。

实际开发中,为什么不推荐用“字段注入(@Autowired注在字段上)”?举一个例子说明可能出现的问题。

SpringAOP的动态代理有哪两种实现方式?分别适用于什么场景?它们的核心区别是什么?

三、应用题(每题20分,共40分)

请编写一个基于Spring注解的AOP切面,实现“记录Service层所有方法的调用日志”功能,要求日志包含:方法名、入参列表、调用时间。

现有一个用户注册的Service方法(如下),需保证“用户插入数据库”和“发送注册短信”两个操作要么同时成功,要么同时失败。请补充代码,通过Spring事务实现该需求,并说明关键配置的作用。

@Service

publicclassUserService{

@Autowired

privateUserMapperuserMapper;

@Autowired

privateSmsServicesmsService;

//需补充事务配置的方法

publicvoidregister(Useruser){

//1.插入用户到数据库

userMapper.insert(user);

//2.发送注册成功短信

smsService.sendRegisterSms(user.getPhone());

}

}

答案部分

一、选择题

D(session作用域的Bean仅在当前浏览器会话内有效,不同会话不共享)

B(@After是最终通知,无论方法成功或异常都会执行;@AfterReturning仅成功后执行,@AfterThrowing仅异常时执行)

A(构造器注入强制依赖项在Bean创建时就初始化,避免后续使用NPE;setter注入适合可选依赖,依赖多则setter冗余)

A(REQUIRES_NEW是无论当前有无事务,都新建事务;SUPPORTS是有事务则加入,无则不使用事务)

D(@Autowired是用于注入Bean,而非标识Bean;前三者是标识Bean的注解,分别对应通用组件、服务层、控制层)

二、简答题

IOC容器核心作用:管理Bean的创建、依赖注入、生命周期,将对象的创建和依赖关系从代码中剥离,降低耦合。

BeanFactory与ApplicationContext区别:

BeanFactory是最基础的IOC容器,仅提供Bean的获取和依赖注入,延迟初始化(获取Bean时才创建);

ApplicationContext是BeanFactory的子类,除基础功能外,还支持国际化、事件发布、资源加载(如@Value读配置),立即初始化(容器启动时就创建所有singletonBean)