• [Spring] Bean生命周期


    Bean生命周期

    假设是直接把bean放入spring容器,这个bean没有实现Spring相关接口。

    扫描并加载BeanDefinition
    实例化Bean, 调用Bean的构造方法
    注入Bean的属性, 依赖注入
    如果Bean使用了init-method属性,
    则调用指定的初始化方法
    如果Bean使用了destroy-method属性,
    则调用指定的销毁方法

    Spring提供了很多接口,方便我们去扩展。

    1、接口BeanNameGenerator

    自定义Bean名称。

    2、接口BeanNameAware

    通过该方法,Bean可以获取到自己在容器中的名称,从而可以在需要时使用该名称进行一些操作,比如日志记录或其他处理。
    同时,该方法也可以用来检查Bean的名称是否满足某些要求,以确保正确地使用该Bean。

    3、接口BeanPostProcessor

    实例化Bean的时候进行处理。

    • postProcessBeforeInitialization
    • postProcessAfterInitialization

    4、接口InstantiationAwareBeanPostProcessor

    继承了BeanPostProcessor接口,除了上面的方法,新增了postProcessProperties。
    可以对Bean属性进行处理。

    • postProcessProperties

    5、接口BeanFactoryAware

    获取BeanFactory对象信息。

    • setBeanFactory

    6、接口ApplicationContextAware

    获取ApplicationContextAware对象信息。

    • setApplicationContext

    7、接口InitializingBean

    Bean实例化后进行一些初始化操作

    • afterPropertiesSet

    8、接口DisposableBean

    Bean实例在销毁时执行必要的清理代码

    • destroy

    @PostConstruct

    @PostConstruct不属于spring,它是JSR250定义的java规范。
    与InitializingBean和initMethod功能一样。

  • 相关阅读:
    C++ 读取txt文件,按行读取,每行按照空格分隔
    【C++】类和对象 从入门到超神 (上)
    【MindSpore产品】relu函数和nn.relu出现环
    java sql字符串解析
    HTTP 原理
    数据结构基础
    三、T100固定资产之固定资产异动管理
    【JAVA】关于抽象类的概念
    C#调用Python脚本
    【算法】区间(差分约束)
  • 原文地址:https://blog.csdn.net/malu_record/article/details/133778866