Bean在IOC容器中的生命周期

大致分为4个部分:Bean定义、Bean初始化、Bean生存期、Bean销毁。

    Bean定义过程大致:Spring加载配置文件,如果找到配置文件,下一步就开始解析。Spring会帮我们创建解析对象,将配置文件中配置的bean加载到容器中。此时仅仅只有bean的定义,bean还实例化。

    有关解析配置文件与加载bean的文章:Spring之加载bean定义流程源码解析 - m0_37343985的博客 - CSDN博客

此步骤是完成资源定位然后发布bean定义到IOC容器的过程,还没有bean实例生成,也没有依赖注入。

Bean的初始化:

Bean在IOC容器中的生命周期_第1张图片

完整的Spring Bean生命周期流程:


Bean在IOC容器中的生命周期_第2张图片

想要自己定义一个bean的生命周期可以通过这个流程图来改造。重写BeanNameAware接口的setName方法,BeanFactoryAware接口的setBeanFactory方法,ApplicationContextAware接口的setApplicationContext方法,InitializingBean接口的afterPropertiesSet方法,销毁方法是使用@PreDestroy标注。还可以使用@PostConstruct注解定义bean初始化方法。

postProcessBeforeInitialization方法与postProcessAfterInitialization方法是对所有bean都会生效,所以不需要重写这部分方法。

注意的是,IOC容器最低的标准是实现BeanFactory接口而不是实现ApplicationContextAware,所以当有些容器未实现ApplicationContextAware接口时是不会调用setApplicationContext方法的。

你可能感兴趣的:(Bean在IOC容器中的生命周期)