Spring高频面试题,附加答案!

看到群里很多小伙伴在讨论面试的事情,

小编立马为大家准备了一批面试资料,

助力大家面试顺顺,offer多多

今天分享的是spring相关的面试题,

1.png

2.png

 

篇幅有限,文章内分享几道题,剩下的资料附加答案,领取方式见文末。

Spring 框架优缺点

优点

  • 方便解耦,简化开发:Spring就是一个大工厂,可以将所有对象的创建和依赖关系的维护,交给Spring管理。
  • AOP编程的支持:Spring提供面向切面编程,可以方便的实现对程序进行权限拦截、运行监控等功能。
  • 声明式事务的支持:只需要通过配置就可以完成对事务的管理,而无需手动编程。
  • 方便程序的测试:Spring对Junit4支持,可以通过注解方便的测试Spring程序。
  • 方便集成各种优秀框架:Spring不排斥各种优秀的开源框架,其内部提供了对各种优秀框架的直接支持(如:Struts、Hibernate、MyBatis等)。
  • 降低JavaEE API的使用难度:Spring对JavaEE开发中非常难用的一些API(JDBC、JavaMail、远程调用等),都提供了封装,使这些API应用难度大大降低。

缺点

  • Spring依赖反射,反射影响性能
  • 使用门槛升高,入门Spring需要较长时间

Spring 框架中都用到了哪些设计模式

Spring 框架中使用到了大量的设计模式,下面列举了比较有代表性的:

  • 代理模式—在 AOP 和 remoting 中被用的比较多。
  • 单例模式—在 spring 配置文件中定义的 bean 默认为单例模式。
  • 模板方法—用来解决代码重复的问题。比如. RestTemplate, JmsTemplate, JpaTempl ate。
  • 前端控制器—Spring 提供了 DispatcherServlet 来对请求进行分发。
  • 视图帮助(View Helper )—Spring 提供了一系列的 JSP 标签,高效宏来辅助将分散的代码整合在视图里。
  • 依赖注入—贯穿于 BeanFactory / ApplicationContext 接口的核心理念。
  • 工厂模式—BeanFactory 用来创建对象的实例

Spring核心组件

Spring 总共大约有 20 个模块, 由 1300 多个不同的文件构成。而这些组件被分别整合在核心容器(Core Container) 、 AOP(Aspect Oriented Programming)和设备支持(Instrmentation) 、数据访问与集成(Data Access/Integeration) 、 Web、 消息(Messaging) 、 Test等 6 个模块中。以下是 Spring 5 的模块结构图:

3.png
  • spring core:提供了框架的基本组成部分,包括控制反转(Inversion of Control,IOC)和依赖注入(Dependency Injection,DI)功能。
  • spring beans:提供了BeanFactory,是工厂模式的一个经典实现,Spring将管理对象称为Bean。
  • spring context:构建于 core 封装包基础上的 context 封装包,提供了一种框架式的对象访问方法。
  • spring jdbc:提供了一个JDBC的抽象层,消除了烦琐的JDBC编码和数据库厂商特有的错误代码解析, 用于简化JDBC。
  • spring aop:提供了面向切面的编程实现,让你可以自定义拦截器、切点等。
  • spring Web:提供了针对 Web 开发的集成特性,例如文件上传,利用 servlet listeners 进行 ioc 容器初始化和针对 Web 的 ApplicationContext。
  • spring test:主要为测试提供支持的,支持使用JUnit或TestNG对Spring组件进行单元测试和集成测试。

为方便大家领取,我已经将所有面试题和答案整理好了,关注下方公众号,回复关键词“spring”,即可免费领取pdf资料👇👇

二维码加字.jpg

请登录后发表评论

    没有回复内容