全网最全且通俗易懂面试题之==>Spring Bean的生命周期 && SpringMVC的调用流程

一、Spring Bean的生命周期

 1.核心元素

  • BeanDefinition对象(Bean的类名、作用域、依赖关系等信息
  • Aware系列接口

    • BeanNameAware 

      • setBeanName()方法--->用于在Bean实例化后,将Bean的名称传递给Bean实例

    • BeanFactoryAware

      • setBeanFactory()方法--->用于在Bean实例化后,将BeanFactory(即Spring容器)传递给Bean实例

    • ApplicationContextAware

      • setApplicationContext()方法--->用于在Bean实例化后,将ApplicationContext(即Spring应用上下文)传递给Bean实例

  • BeanPostProcessor对象 --(初始化执行的方法-类比aop)

    • postProcessBeforeInitialization()方法

    • postProcessAfterInitialization()方法

  • InitializingBean接口

    • afterPropertiesSet()方法 -- (初始化方法)

  • init-method -- (自定义初始化方法)

  • DisposableBean接口 

    • destroy()方法 -- (销毁方法)

  • destory-method -- (自定义销毁方法)

详细总图

2.调用流程

  1. Spring框架会自动读取配置文件中所定义的类的相关信息,然后将其封装到BeanDefinition对象中(Bean的类名、作用域、依赖关系等信息)
  2. 通过反射借助于无参构造方法创建对象
  3. 调用set方法进行依赖注入
  4. 如果bean实现了BeanNameAware接口,那么此时就会执行该接口中的setBeanName方法
  5. 如果bean实现了BeanFactoryAware接口,那么此时就会执行该接口中的setBeanFactory.方法
  6. 如果bean实现了ApplicationContextAware接口,那么此时就会执行该接口中的setApplicationContext方法
  7. 如果在spring容器中存在BeanPostProcessor对象,那么此时就会执行该对象的postProcessBeforeInitialization,方法
  8. 如果bean实现了InitializingBean接口,那么此时就会执行afterPropertiesSet方法
  9. 如果存在自定义初始化方法,那么此时就会执行该方法
  10. 如果在spring容器中存在BeanPostProcessor对象,那么此时就会执行该对象的postProcessAfterInitialization方法
  11. 如果bean实现了DisposableBean接口,那么此时就会执行该接口中的destroy方法
  12. 如果存在自定义销毁方法,那么此时就会执行自定义销毁方法

二、SpringMVC的调用流程

 1.核心元素:

  • DispatcherServlet(前端控制器)
  • HandlerMapping(处理器映射器)
  • HandlerAdapter(处理器适配器)  --->  Handler(处理器)
  • ViewResolver(视图解析器 )---> view(视图)

 2.调用流程

  1. 用户发送请求到前端控制器
  2. 前端控制器接收用户请求并交由处理器映射器进行映射处理
  3. 处理器映射器找到具体的处理器(可查找xml配置或注解配置),生成处理器对象及处理器拦截器(如果有),再一起返回给前端控制器
  4. 前端控制器调用处理器适配器,适配具体的处理器(controller/handler)
  5. 处理器执行后生成ModelAndView对象并返回给前端控制器
  6. 前端控制器将拿到的ModelAndView对象交由视图解析器进行解析
  7. 视图解析器将解析后的视图(view)返回给前端控制器
  8. 前端控制器根据拿到的视图进行渲染(数据模型填充视图)
  9. 前端控制器响应用户请求

详细总图

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

NIIMP

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

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

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

打赏作者

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

抵扣说明:

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

余额充值