Spring Bean生命周期源码原理图解

 更新时间:2020年10月23日 08:29:05   作者:browser123  
这篇文章主要介绍了Spring Bean生命周期源码原理图解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

概述

spring流行了很长时间了,是一个用java编写的轻量级框架,受到了很多公司及程序员的欢迎,Bean生命周期是一个对象从实例化开始到销毁的全过程,了解生命周期是很有必要的。

重要性

spring的生命周期是比较复杂的,只有了解其过程及原理才能更好的扩展程序。

源码剖析生命周期过程bean的实例化

属性填充及Aware接口检测设置依赖

如果容器自定义了BeanpostProcessor的实现类,则执行处理器相应的前置处理

bean实现了初始化接口InitlializingBean,则会执行相应的逻辑

同时也自定义了初始化方法init-method

如果容器自定义了BeanpostProcessor的实现类,则会执行相应处理器的后置处理

注册销毁的回调bean

bean实现了销毁接口DisposableBean,则会执行相应的逻辑

同时也自定义了销毁化方法destory-method

流程的请求总结


上述流程图总结了从容器启动到销毁的全过程

总结

一、从上面源码分析,spring的生命周期可以分为四大块:

1、bean的实例化

2、bean属性的设值

3、bean的初始化

4、bean的销毁

二、实现了Aware的接口,则会注入相应的依赖

三、接口BeanPostProcessor有两个初始化方法,这两个方法在增加bean的时候,很重要,比如,spring aop可以返回一个代理对象;参数的解密等等

四、其中生命周期用了简单工厂、工厂方法、单例模式、适配器模式、策略模式,利用这些设计模式,能够设计出更好的应用程序。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • mybatis插件实现自定义改写表名实例代码

    mybatis插件实现自定义改写表名实例代码

    在数据库操作过程中,经常有修改表名的需求,下面这篇文章主要给大家介绍了关于mybatis插件实现自定义改写表名的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-04-04
  • Spring MVC简介_动力节点Java学院整理

    Spring MVC简介_动力节点Java学院整理

    Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。今天先从写一个Spring MVC的HelloWorld开始,让我们看看如何搭建起一个Spring mvc的环境并运行程序,感兴趣的朋友一起学习吧
    2017-08-08
  • HttpClient 请求 URL字符集转码问题

    HttpClient 请求 URL字符集转码问题

    这篇文章主要介绍了HttpClient 请求 URL字符集转码问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-01-01
  • Linux系统下搭建Java开发环境

    Linux系统下搭建Java开发环境

    本文主要是记录了如何在Linux环境下一步步安装JAVA JDK环境,非常简单实用,有需要的朋友可以参考下
    2014-10-10
  • Eclipse配置Tomcat和JDK步骤图解

    Eclipse配置Tomcat和JDK步骤图解

    这篇文章主要内容是Eclipse配置Tomcat和JDK步骤图解,需要的朋友可以参考下
    2015-08-08
  • 适用于Java程序员的10道XML面试题 新鲜出炉

    适用于Java程序员的10道XML面试题 新鲜出炉

    这篇文章主要为大家详细介绍了Java程序员的10道XML面试题,感兴趣的小伙伴们可以参考一下
    2016-07-07
  • 在Intellij Idea中使用jstl标签库的方法

    在Intellij Idea中使用jstl标签库的方法

    这篇文章主要介绍了在Intellij Idea中使用jstl标签库的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-05-05
  • springboot整合RabbitMQ 中的 TTL实例代码

    springboot整合RabbitMQ 中的 TTL实例代码

    TTL 是 RabbitMQ 中一个消息或者队列的属性,表明一条消息或者该队列中的所有消息的最大存活时间,单位是毫秒,这篇文章主要介绍了springboot整合RabbitMQ 中的 TTL,需要的朋友可以参考下
    2022-09-09
  • Java子类调用父类的私有属性的实现示例

    Java子类调用父类的私有属性的实现示例

    在Java中,我们都知道子类不能直接访问或修改父类的私有属性,本文主要介绍了Java子类调用父类的私有属性的实现示例,具有一定的参考价值,感兴趣的可以了解一下
    2024-05-05
  • springboot3请求参数种类及接口测试案例小结

    springboot3请求参数种类及接口测试案例小结

    这篇文章主要介绍了springboot3请求参数种类及接口测试案例小结,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2023-10-10

最新评论