Java面试题之Spring篇

简介: Spring一直都是经典中的经典,所以是必须掌握的,而且里面有很多优秀的设计模式的巧妙使用,我们也可以借鉴,然后运用到实际的开发中去。

一.题目介绍


1.题目来源


实际面试中遇到,形式的话有书面解答也有口述。一般侧重点为Spring的bean的作⽤域,Spring中的bean⽣命周期,Spring MVC的请求流程,Spring中⽤到了哪些设计模式?


2.题目


1)Spring的bean的作⽤域


2)Spring中的bean⽣命周期


3)Spring MVC的请求流程


4)Spring中⽤到了哪些设计模式?


二.具体解答


1.Spring的bean的作⽤域

  • singleton : 唯⼀ bean 实例,Spring 中的 bean 默认都是单例的。
  • prototype : 每次请求都会创建⼀个新的 bean 实例。
  • request : 每⼀次HTTP请求都会产⽣⼀个新的bean,该bean仅在当前HTTP request内有 效。
  • session : 每⼀次HTTP请求都会产⽣⼀个新的 bean,该bean仅在当前 HTTP session 内有 效。
  • global-session: 全局session作⽤域,仅仅在基于portlet的web应⽤中才有意义,Spring5已经没有了。
  • Portlet是能够⽣成语义代码(例如:HTML)⽚段的⼩型Java Web插件。它们基于 portlet容器,可以像servlet⼀样处理HTTP请求。但是,与 servlet 不同,每个portlet 都有不 同的会话


2.Spring中的bean⽣命周期

创建->使用->销毁

  • Bean自身的方法:比如构造函数、getter/setter以及init-method和destory-method所指定的方法等
  • Bean级生命周期方法:可以理解为Bean类直接实现接口的方法,比如BeanNameAware、BeanFactoryAware、ApplicationContextAware、InitializingBean、DisposableBean等方法,这些方法只对当前Bean生效
  • 容器级的方法(BeanPostProcessor一系列接口):主要是后处理器方法,比如上图的InstantiationAwareBeanPostProcessor、BeanPostProcessor接口方法。这些接口的实现类是独立于bean的,并且会注册到Spring容器中。在Spring容器创建任何Bean的时候,这些后处理器都会发生作用。
  • 工厂后处理器方法(BeanFactoryProcessor一系列接口):包括AspectJWeavingEnabler、CustomAutowireConfigurer、ConfigurationClassPostProcessor等。这些都是Spring框架中已经实现好的BeanFactoryPostProcessor,用来实现某些特定的功能。


3.Spring MVC的请求流程

微信截图_20220531213645.png1)客户端(浏览器)发送请求,直接请求到DispatcherServlet 。

2)DispatcherServlet根据请求信息调⽤HandlerMapping,解析请求对应的Handler 。

3)解析到对应的Handler(也就是我们平常说的 Controller 控制器)后,开始由HandlerAdapte适配器处理。

4)HandlerAdapter会根据Handler来调⽤真正的处理器开处理请求,并处理相应的业务逻辑。

5)处理器处理完业务后,会返回⼀个ModelAndView对象, Model是返回的数据对象, View是个逻辑上的View。 6)ViewResolver 会根据逻辑View 查找实际的View 。

7)DispaterServlet 把返回的Model传给View(视图渲染)。

  1. 把 View 返回给请求者(浏览器渲染前端页面,数据显示)


4.Spring中⽤到了哪些设计模式?

⼯⼚设计模式 : Spring使⽤⼯⼚模式通过 BeanFactory 、 ApplicationContext 创建 bean 对 象。

代理设计模式 : Spring AOP 功能的实现。

单例设计模式 : Spring 中的Bean默认都是单例的。怎么保证单例Bean安全是个值得思考的问题。

包装器设计模式 : 我们的项⽬需要连接多个数据库,⽽且不同的客户在每次访问中根据需要 会去访问不同的数据库。这种模式让我们可以根据客户的需求能够动态切换不同的数据源。

观察者模式: Spring 事件驱动模型就是观察者模式很经典的⼀个应⽤。

适配器模式 :Spring AOP 的增强或通知(Advice)使⽤到了适配器模式、spring MVC 中也是⽤ 到了适配器模式适配 Controller


三.题后思考


Spring一直都是经典中的经典,所以是必须掌握的,而且里面有很多优秀的设计模式的巧妙使用,我们也可以借鉴,然后运用到实际的开发中去。

目录
相关文章
|
9天前
|
安全 架构师 Java
Java大厂面试高频:Collection 和 Collections 到底咋回答?
Java中的`Collection`和`Collections`是两个容易混淆的概念。`Collection`是集合框架的根接口,定义了集合的基本操作方法,如添加、删除等;而`Collections`是一个工具类,提供了操作集合的静态方法,如排序、查找、同步化等。简单来说,`Collection`关注数据结构,`Collections`则提供功能增强。通过小王的面试经历,我们可以更好地理解这两者的区别及其在实际开发中的应用。希望这篇文章能帮助你掌握这个经典面试题。
26 4
|
13天前
|
Java Spring
Java Spring Boot监听事件和处理事件
通过上述步骤,我们可以在Java Spring Boot应用中实现事件的发布和监听。事件驱动模型可以帮助我们实现组件间的松耦合,提升系统的可维护性和可扩展性。无论是处理业务逻辑还是系统事件,Spring Boot的事件机制都提供了强大的支持和灵活性。希望本文能为您的开发工作提供实用的指导和帮助。
65 15
|
9天前
|
监控 Dubbo Java
Java Dubbo 面试题
Java Dubbo相关基础面试题
|
11天前
|
监控 JavaScript 数据可视化
建筑施工一体化信息管理平台源码,支持微服务架构,采用Java、Spring Cloud、Vue等技术开发。
智慧工地云平台是专为建筑施工领域打造的一体化信息管理平台,利用大数据、云计算、物联网等技术,实现施工区域各系统数据汇总与可视化管理。平台涵盖人员、设备、物料、环境等关键因素的实时监控与数据分析,提供远程指挥、决策支持等功能,提升工作效率,促进产业信息化发展。系统由PC端、APP移动端及项目、监管、数据屏三大平台组成,支持微服务架构,采用Java、Spring Cloud、Vue等技术开发。
|
9天前
|
SQL Java 数据库连接
Java MyBatis 面试题
Java MyBatis相关基础面试题
|
9天前
|
存储 监控 算法
Java JVM 面试题
Java JVM(虚拟机)相关基础面试题
|
9天前
|
SQL 监控 druid
Java Druid 面试题
Java Druid 连接池相关基础面试题
|
9天前
|
缓存 安全 算法
Java 多线程 面试题
Java 多线程 相关基础面试题
|
1月前
|
Java 开发者 微服务
Spring Boot 入门:简化 Java Web 开发的强大工具
Spring Boot 是一个开源的 Java 基础框架,用于创建独立、生产级别的基于Spring框架的应用程序。它旨在简化Spring应用的初始搭建以及开发过程。
73 6
Spring Boot 入门:简化 Java Web 开发的强大工具
|
30天前
|
Java
Java社招面试题:& 和 && 的区别,HR的套路险些让我翻车!
今日分享的主题是如何区分&和&&的区别,提高自身面试的能力。主要分为以下四部分。 1、自我面试经历 2、&amp和&amp&amp的不同之处 3、&对&&的不同用回答逻辑解释 4、彩蛋