IT袋

当前位置:主页 > 经验教程 > 建站编程 >

Spring

Spring Bean的生命周期

时间:2024-01-09 15:57:07 来源:IT袋 作者:马勇
导读:Spring,文章摘要:Spring方面的介绍,具体详情如下: 既然聊到Spring Bean的生命周期,首先,我们要知道的是Java Bean和Spring Bean实例化过程是有一些区别的。 Java Bean创建的步骤 简

Spring

文章摘要:Spring方面的介绍,具体详情如下:

既然聊到Spring Bean的生命周期,首先,我们要知道的是Java Bean和Spring Bean实例化过程是有一些区别的。

Java Bean创建的步骤

简要的说一下普通环境下创建Java Bean简要的几个步骤:

  • 首先Java源码会被编译为class文件。
  • 接着类被初始化(比如new对象、反射获取对象等操作)。
  • 然后class文件会被虚拟机通过类加载器加载到JVM。
  • 最后会初始化对象供我们使用。

简单来说可以理解为Class文件作为【模板】进而创建出具体的实例。面试这么简单聊一下从而引出Spring对象的生命周期,显得你更加从容。

步入正题 :

Spring Bean的生命周期

而Spring所管理的Bean与Java不同的是,除了Class对象之外,还会使用BeanDefinition的实例来描述对象的信息。比如说:

  • 我们可以在Spring所管理的Bean中有一系列的描述,常见的有:@Scope、@Lazy、@DependsOn等等 。

可以理解为:Class只描述了类的信息,而BeanDefinition描述了对象的信息。也就是Spring有BeanDefinition来存储我们日常给Spring Bean定义的元数据(@Scope、@Lazy、@DependsOn)。

流程

  • 首先Spring在启动的时候需要扫描在XML/注解/JavaConfig中需要被Spring管理的Bean信息
  • 随后,会将这些信息封装成BeanDefinition,最后会把这些信息放到一个BeanDefinitionMap中
    • BeanDefinitionMap中的key是beanName,value是BeanDefinition对象
    • 到这里其实是把定义的元数据加载起来,目前真实的对象还没有进行实例化
  • 接着会遍历这个BeanDefinitionMap,执行BeanFactoryPostProcessor这个Bean工厂后置处理的逻辑
    • 比如说:我们平时定义的占位符信息,就是通过BeanFactoryPostProcessor的子类PropertyPlaceholderConfigurer进行注入进去的。
    • 当然这里我们也可以通过自定义BeanFactoryPostProcessor来对我们定义好的Bean元数据进行获取或者修改。只是我们一般不会这么做的,实际的应用场景也很少。
  • BeanFactoryPostProcessor后置处理器执行完之后,就到了实例化对象了,在Spring里边是通过反射来实现的,一般情况下会通过反射选择合适的构造器来把对象实例化。注意,这里把对象实例化,只是将对象创建出来,而对象的属性还没有注入的。
    • 比如:有一个对象UserService依赖着SendService对象,这时SendService还是null的。
  • 实例化完成后,紧接着就是把对象的相关属性给注入。
  • 属性注入完成之后,就是初始化的动作了。
  • Bean的初始化首先会判断该Bean时候实现了Aware相关的接口,如果存在了则会填充相关资源。

相关阅读

  • curl命令怎么用 curl常用命令及参数详解

    curl命令怎么用 curl常用命令及参数详解

    cURL命令怎么用? 初学者往往对 cURL命令参数 不熟悉,下面IT袋小编就给大家收集整理了一份比较齐全的cURL命令参数/选项大全,帮助各位快速熟悉入门。 cURL命令是一个利用URL规则在命令行下工

  • c++零基础怎么学 零基础如何学习C语言?

    c++零基础怎么学 零基础如何学习C语言?

    一篇IT技术小知识,为您介绍c++零基础怎么学的相关话题,下面IT袋网为您详细介绍 C++ 是一种通用的、面向对象的编程语言,可以用于开发操作系统、游戏、图形用户界面、后端、高性能系统

  • 什么是服务器防火墙? 服务器防火墙的工作原理

    什么是服务器防火墙? 服务器防火墙的工作原理

    本文核心导读:什么是服务器防火墙的相关知识,一起来了解了解吧。 随着互联网的发展和普及,服务器和网络安全问题也越来越受到关注。作为服务器的第一道防线,防火墙在互联网安全中

  • mysql常用命令行大全 SQL从入门到精通

    mysql常用命令行大全 SQL从入门到精通

    本文为你介绍mysql常用命令行大全和SQL从入门到精通的相关介绍,接下来一起来看看吧。 缘由:初次接触命令行操作MySQL数据库,使用还不熟练,故整理之,方便日后查阅。 备注: 用户登录