Spring面试题及详细答案.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

Spring面试题及详细答案

一、Spring核心概念相关

1.什么是Spring?它的核心优势有哪些?

答案:Spring是一个轻量级的Java开发框架,核心是IOC(控制反转)和AOP(面向切面编程),主要作用是简化Java企业级开发。

核心优势:

1)解耦:通过IOC容器管理对象依赖,替代手动new对象和组装依赖,降低组件间耦合度;

2)AOP支持:能在不修改业务代码的前提下,实现日志记录、事务管理、权限控制等横切逻辑;

3)一站式框架:整合了ORM(如MyBatis)、事务管理、Web开发(SpringMVC)、缓存等功能,不用单独整合多个框架;

4)轻量灵活:核心包体积小,不强制依赖其他组件,可按需集成,支持注解和XML两种配置方式,适应不同开发习惯;

5)便于测试:Spring支持依赖注入,能轻松通过Mock对象进行单元测试,降低测试难度。

2.解释一下Spring中的IOC和DI,以及它们的关系?

答案:

IOC(InverseofControl,控制反转):核心思想是“将对象的创建和依赖管理交给Spring容器”,反转了传统开发中“开发者手动控制对象创建和依赖”的流程。比如传统开发中,要使用一个Service,需要自己newService(),还要手动注入它依赖的Dao;而IOC中,开发者只需定义对象,由Spring容器负责创建对象并注入所需依赖。

DI(DependencyInjection,依赖注入):是IOC的具体实现方式,指Spring容器在创建对象时,自动将对象所需的依赖(如属性、构造方法参数)注入到对象中。常见的注入方式有构造器注入、setter注入、注解注入(@Autowired)。

关系:DI是IOC的实现手段,IOC是核心思想;也就是说,Spring通过DI的方式,实现了IOC的核心目标——解耦。

二、SpringBean相关

1.SpringBean的生命周期是什么?

答案:SpringBean的生命周期是从对象创建到销毁的完整过程,核心步骤如下(以单例Bean为例):

1)实例化:Spring容器通过反射创建Bean的实例(调用无参构造方法,若用构造器注入则调用对应有参构造);

2)属性注入:Spring容器将Bean依赖的属性(或其他Bean)注入到当前实例中(对应setter注入或构造器注入逻辑);

3)初始化前:若Bean实现了BeanPostProcessor接口,会调用postProcessBeforeInitialization方法(前置处理器,可自定义增强逻辑);

4)初始化:执行自定义初始化逻辑,优先级:@PostConstruct注解方法实现InitializingBean接口的afterPropertiesSet方法XML配置的init-method属性指定的方法;

5)初始化后:若Bean实现了BeanPostProcessor接口,会调用postProcessAfterInitialization方法(后置处理器,比如AOP动态代理就在这一步生成代理对象);

6)Bean就绪:此时Bean已完全创建完成,可被容器或外部调用;

7)销毁前:执行自定义销毁逻辑,优先级:@PreDestroy注解方法实现DisposableBean接口的destroy方法XML配置的destroy-method属性指定的方法;

8)销毁:Spring容器关闭时,销毁Bean实例(单例Bean随容器销毁,原型Bean由开发者手动销毁,容器不管理)。

2.SpringBean的作用域有哪些?分别适用于什么场景?

答案:SpringBean有5种核心作用域(Spring5+支持,基于Spring容器):

1)singleton(单例):默认作用域,容器中只存在一个Bean实例,所有请求都共享这个实例。适用场景:无状态组件(如Service、Dao层),因为无状态组件不会因多线程共享而产生数据安全问题;

2)prototype(原型):每次请求(getBean())都会创建一个新的Bean实例。适用场景:有状态组件(如Controller层的请求参数对象、视图模型),避免多线程共享导致的数据污染;

3)request(请求):仅适用于Web环境,每个HTTP请求会创建一个新的Bean实例,请求结束后Bean销毁。适用场景:需要存储当前请求数据的组件(如请求级别的缓存对象);

4)session(会话):仅适用于Web环境,每个HTTPSession会创建一个新的Bean实例,会话过期后Bean销毁。适用场景:需要存储用户会话数据的组件(如用户登录信息、购物车);

5)application(应用):仅适用于Web环境,整个Web应用共享一个Bea

文档评论(0)

151****9429 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档