Java面试题———Spring篇③

目录

一,SpringBean的生命周期

二,SpringMVC执行流程

三,SpringMVC的常用注解有哪些

四,SpringMVC如何处理统一异常


一,SpringBean的生命周期

  1. Bean 容器找到配置文件中 Spring Bean 的定义。

  2. Bean 容器利用 Java Reflection API 创建一个 Bean 的实例。

  3. 如果涉及到一些属性值,利用 set()方法设置一些属性值。

  4. 如果 Bean 实现了 BeanNameAware 接口,调用 setBeanName()方法,传入 Bean 的名字。

  5. 如果 Bean 实现了 BeanClassLoaderAware 接口,调用 setBeanClassLoader()方法,传入 ClassLoader 对象的实例。

  6. 如果 Bean 实现了 BeanFactoryAware 接口,调用 setBeanClassFacotory()方法,传入 ClassLoader 对象的实例。

  7. 与上面的类似,如果实现了其他*Aware 接口,就调用相应的方法。

  8. 如果有和加载这个 Bean 的 Spring 容器相关的 BeanPostProcessor 对象,执行 postProcessBeforeInitialization()方法。

  9. 如果 Bean 实现了 InitializingBean 接口,执行 afeterPropertiesSet()方法。

  10. 如果 Bean 在配置文件中的定义包含 init-method 属性,执行指定的方法。

  11. 如果有和加载这个 Bean 的 Spring 容器相关的 BeanPostProcess 对象,执行 postProcessAfterInitialization()方法。

  12. 当要销毁 Bean 的时候,如果 Bean 实现了 DisposableBean 接口,执行 destroy()方法。

  13. 当要销毁 Bean 的时候,如果 Bean 在配置文件中的定义包含 destroy-method 属性,执行指定的方法。

总结以上步骤,核心主干主要就是五部分构成:

  1. 构造 Bean 对象

  2. 设置 Bean 属性

  3. 初始化回调

  4. Bean 调用

  5. 销毁 Bean

二,SpringMVC执行流程

MVC 是 Model — View — Controler 的简称,它是一种架构模式,它分离了表现与交互。它被分为三个核心部件:模型、视图、控制器。

具体流程如下所示:

1、用户发送出请求到前端控制器DispatcherServlet。

2、DispatcherServlet收到请求调用HandlerMapping(处理器映射器)。

3、HandlerMapping找到具体的处理器(可查找xml配置或注解配置),生成处理器对象及处理器拦截器(如果有),再一起返回给DispatcherServlet。

4、DispatcherServlet调用HandlerAdapter(处理器适配器)。

5、HandlerAdapter经过适配调用具体的处理器(Handler/Controller)。

6、Controller执行完成返回ModelAndView对象。

7、HandlerAdapter将Controller执行结果ModelAndView返回给DispatcherServlet。

8、DispatcherServlet将ModelAndView传给ViewReslover(视图解析器)。

9、ViewReslover解析后返回具体View(视图)。

10、DispatcherServlet根据View进行渲染视图(即将模型数据填充至视图中)。

11、DispatcherServlet响应用户。

三,SpringMVC的常用注解有哪些

我们常用的Springmvc注解主要分类下面几大类:

1、用于声明Bean到Springmvc容器:@Controller、@RestController

区别在于后者还可以将返回的集合或对象转换为JSON直接返回

2、设置请求路径:@RequestMapping、@GetMapping、@PostMapping 、@PutMapping、@DeleteMapping

第一个是通用的,可以接收各种类型的请求;后面四个只能直接对应类型的请求

3、接收请求参数:

@RequestBody: 接收请求体中的json数据

@PathViriable:接收请求路径中的参数

@RequestHeader:接收请求头中的参数

@RequestParam:一般用于给参数设置默认值或者完成请求参数和controller方法参数的映射

四,SpringMVC如何处理统一异常

SpringMVC的异常处理底层是通过AOP实现的,它的核心思想是将异常处理的代码和业务逻辑代码分离开来

使用它之后,我们在自己的业务代码中不需要在处理异常,有异常直接就上抛到框架中

框架就会将异常交给自定义的全局异常处理器中统一处理

自定义全局异常处理器,会用到两个注解:

  1. @RestControllerAdvice 标注在类上,声明被标注的类是一个用于专门处理异常的类

  2. @ExceptionHandler 标注在异常处理类中的方法上,声明被标注的方法可以处理哪些异常

  • 6
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

啵啵薯条

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值