栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Spring的Bean生命周期

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Spring的Bean生命周期

    什么是生命周期呢?

    当前组件在创建到销毁经历的一系列过程,称之为生命周期

    生命周期的分为几个阶段?每个阶段有哪些钩子函数?

    生命周期分为3个阶段,这三个阶段分别是: 初始化 、 运行中 、 销毁

Spring Bean的生命周期:
通过一张图表示


1、通过XML、Java annotation(注解)以及Java Configuration(配置类)
等方式加载Spring Bean

2、BeanDefinitionReader:解析Bean的定义。在Spring容器启动过程中,
会将Bean解析成Spring内部的BeanDefinition结构;

例如:

中的标签转换成BeanDefinition结构


3、BeanDefinition:包含了很多属性和方法。例如:id、class(类名)、
scope、ref(依赖的bean)等等。其实就是将bean(例如)的定义信息
存储到这个对应BeanDefinition相应的属性中

例如:
-----> BeanDefinition(id/class/scope)

4、BeanFactoryPostProcessor:是Spring容器功能的扩展接口。

        注意:
        1)BeanFactoryPostProcessor在spring容器加载完BeanDefinition之后,
        在bean实例化之前执行的
        2)对bean元数据(BeanDefinition)进行加工处理,也就是BeanDefinition
        属性填充、修改等操作

5、BeanFactory:bean工厂。它按照我们的要求生产我们需要的各种各样的bean。

        例如:
        BeanFactory -> List(循环多个bean)
        BeanDefinition(id/class/scope/init-method)
        
        foreach(BeanDefinition bean : List){
           //根据class属性反射机制实例化对象
           //反射赋值设置属性
        }


6、Aware感知接口:在实际开发中,经常需要用到Spring容器本身的功能资源
例如:BeanNameAware、ApplicationContextAware等等
BeanDefinition 实现了 BeanNameAware、ApplicationContextAware就进行处理

否则就不就行处理跳过当前环节

7、BeanPostProcessor:后置处理器。在Bean对象实例化和引入注入完毕后,
在显示调用初始化方法的前后添加自定义的逻辑。(类似于AOP的绕环通知)

前提条件:如果检测到Bean对象实现了BeanPostProcessor后置处理器才就会先执行
Before 方法
随后调用初始化Bean(InitializingBean和init-method,Bean的初始化才算完成)
再调用After方法

否则直接初始化Bean

到这就完成了Bean的创建工作

8、destory:销毁

以上的这些都是完成这个动作

Spring的IOC和AOP:
//初始化Spring上下文容器(IOC)
ApplicationContext ac=
    new ClassXmlPathApplicationContext("spring.xml");

总结

Spring Bean的生命周期分为四个阶段和多个扩展点。扩展点又可以分为影响多个Bean和影响单个Bean。整理如下:
四个阶段

实例化 Instantiation属性赋值 Populate初始化 Initialization销毁 Destruction

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/777392.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号