Spring bean生命周期配置过程解析

1.实例化bean

AbstractAutowireCapableBeanFactory类中的
createBeanInstance(beanName, mbd, args);

2.为bean注入属性

AbstractAutowireCapableBeanFactory类中的
populateBean(beanName, mbd, instanceWrapper);

3.调用各种实现的Aware接口(BeanNameAware, BeanFactoryAware, ApplicationContextAware),调用相关的set方法

AbstractAutowireCapableBeanFactory 类中
invokeAwareMethods(beanName, bean);

4.调用BeanPostProcessor的postProcessBeforeInitialization方法

AbstractAutowireCapableBeanFactory 类中
applyBeanPostProcessorsBeforeInitialization(wrappedBean, beanName);

5.调用InitializingBean的afterPropertiesSet方法

AbstractAutowireCapableBeanFactory 类中
invokeInitMethods(beanName, wrappedBean, mbd);

6.调用定制的init方法(xml配置的init-method方法或者@Bean(initMethod="xx") )

AbstractAutowireCapableBeanFactory 类中
invokeInitMethods(beanName, wrappedBean, mbd);

7.调用BeanPostProcessor的postProcessAfterInitializarion方法

AbstractAutowireCapableBeanFactory 类中
applyBeanPostProcessorsAfterInitialization(wrappedBean, beanName);

bean就准就绪了。

8.调用DisposableBean接口的destory()方法(如果bean实现的话)

9.调用定制destory方法(xml配置的destory-method方法或者#Bean(destory="xx"))

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

(0)

相关推荐

  • Spring学习笔记之bean生命周期

    前言 上一篇文章主要学习了下bean的配置.注入.自定义属性编辑器,今天来熟悉bean的生命周期. 任何一个事物都有自己的生命周期,生命的开始.生命中.生命结束.大家最熟悉的应该是servlet 的生命周期吧.和 servlet 一样 spring bean 也有自己的生命周期. 在开发中生命周期是一个很常见的名词,基本每种编程语言都能找到与它关联的.关于bean的生命周期我在网上也找了好多,基本都差不多.这里我主要是想通过代码来验证,毕竟学的知识都是一样的,都是学的Java,最重要的是动手练习

  • SPRING FRAMEWORK BEAN作用域和生命周期原理解析

    这篇文章主要介绍了SPRING FRAMEWORK BEAN作用域和生命周期原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 Spring beand的作用域 设置为singleton时,相当于一个类只能有一个实例,当再次申请时,返回的是同一个实例 可以看到两个bean实例的hashcode值是一样的,说明在此申请到的是同一个实例 将bean的作用域设置为prototype时,再次运行,可以看到,申请到的是两个不同bean实例 目前只学习

  • 深入了解Spring中Bean的作用域和生命周期

    作用域的种类 Spring 容器在初始化一个 Bean 的实例时,同时会指定该实例的作用域.Spring3 为 Bean 定义了五种作用域,具体如下. 1)singleton 单例模式,使用 singleton 定义的 Bean 在 Spring 容器中只有一个实例,这也是 Bean 默认的作用域. 2)prototype 原型模式,每次通过 Spring 容器获取 prototype 定义的 Bean 时,容器都将创建一个新的 Bean 实例. 3)request 在一次 HTTP 请求中,容

  • 浅谈Spring bean 生命周期验证

    一.从源码注释看bean生命周期 从JDK源码上看,BeanFactory实现类需要支持Bean的完整生命周期,完整的初始化方法及其标准顺序(格式:接口 方法)为: 1.BeanNameAware setBeanName 设置bean名称 2.BeanClassLoaderAware setBeanClassLoader 设置bean类加载器 3.BeanFactoryAware setBeanFactory 设置bean工厂 4.EnvironmentAware setEnvironment

  • spring中bean的生命周期详解

    1.Spring IOC容器可以管理bean的生命周期,Spring允许在bean生命周期内特定的时间点执行指定的任务. 2.Spring IOC容器对bean的生命周期进行管理的过程: ① 通过构造器或工厂方法创建bean实例 ② 为bean的属性设置值和对其他bean的引用 ③ 调用bean的初始化方法 ④ bean可以使用了 ⑤ 当容器关闭时,调用bean的销毁方法 3.在配置bean时,通过init-method和destroy-method 属性为bean指定初始化和销毁方法 4.be

  • 谈谈我对Spring Bean 生命周期的理解

    前言 Spring的ioc容器功能非常强大,负责Spring的Bean的创建和管理等功能.而Spring 的bean是整个Spring应用中很重要的一部分,了解Spring Bean的生命周期对我们了解整个spring框架会有很大的帮助. BeanFactory和ApplicationContext是Spring两种很重要的容器,前者提供了最基本的依赖注入的支持,而后者在继承前者的基础进行了功能的拓展,例如增加了事件传播,资源访问和国际化的消息访问等功能.本文主要介绍了ApplicationCo

  • 浅谈Spring中Bean的作用域、生命周期

    本文主要探究的是关于Bean的作用域.生命周期的相关内容,具体如下. Bean的作用域 Spring 3中为Bean定义了5中作用域,分别为singleton(单例).prototype(原型).request.session和global session,5种作用域说明如下: 1.singleton:单例模式,Spring IoC容器中只会存在一个共享的Bean实例,无论有多少个Bean引用它,始终指向同一对象.Singleton作用域是Spring中的缺省作用域,也可以显示的将Bean定义为

  • Spring中Bean的生命周期使用解析

    Bean的生命周期 解释 (1)BeanFactoryPostProcessor的postProcessorBeanFactory()方法:若某个IoC容器内添加了实现了BeanFactoryPostProcessor接口的实现类Bean,那么在该容器中实例化任何其他Bean之前可以回调该Bean中的postPrcessorBeanFactory()方法来对Bean的配置元数据进行更改,比如从XML配置文件中获取到的配置信息. (2)Bean的实例化:Bean的实例化是使用反射实现的. (3)B

  • Spring bean生命周期配置过程解析

    1.实例化bean AbstractAutowireCapableBeanFactory类中的 createBeanInstance(beanName, mbd, args); 2.为bean注入属性 AbstractAutowireCapableBeanFactory类中的 populateBean(beanName, mbd, instanceWrapper); 3.调用各种实现的Aware接口(BeanNameAware, BeanFactoryAware, ApplicationCont

  • Spring Bean生命周期详细分析

    目录 前言 一.Bean的介绍 什么是Bean Bean的生命周期 Bean的作用域 二.详细过程 1. Bean的实例化 2. InstantiationAwareBeanPostProcessor 3. 设置属性(依赖注入) 4. 注入Aware接口 5. BeanPostProcessor的postProcessBeforeInitialzation方法 6. InitializingBean与init-method 7. BeanPostProcess的postProcessAfterI

  • 全面详解Spring Bean生命周期教程示例

    目录 Spring 中 Bean 的生命周期 Bean 的实例化 构造方法注入 工厂方法注入 Bean 的属性赋值 setter注入 构造方法注入 Bean 的初始化 初始化方法 InitializingBean 接口 Bean 的销毁 销毁方法 DisposableBean 接口 总结 Spring 中 Bean 的生命周期 是当今最流行的 Java 开发框架之一,其强大的 Bean容器机制是其中的核心之一.Bean 是指在 Spring 容器中被管理的对象,它们可以被注入到其他对象中,也可以

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

    概述 spring流行了很长时间了,是一个用java编写的轻量级框架,受到了很多公司及程序员的欢迎,Bean生命周期是一个对象从实例化开始到销毁的全过程,了解生命周期是很有必要的. 重要性 spring的生命周期是比较复杂的,只有了解其过程及原理才能更好的扩展程序. 源码剖析生命周期过程bean的实例化 属性填充及Aware接口检测设置依赖 如果容器自定义了BeanpostProcessor的实现类,则执行处理器相应的前置处理 bean实现了初始化接口InitlializingBean,则会执行

  • Spring Bean生命周期之Bean元信息的配置与解析阶段详解

    目录 BeanDefinitionReader体系 BeanDefinitionReader接口定义 元信息配置与解析方式 XmlBeanDefinitionReader元信息解析源码分析 AnnotatedBeanDefinitionReader元信息解析源码分析 总结 写在前面 注:本文章使用的 SpringBoot 版本为 2.2.4.RELEASE,其 Spring 版本为 5.2.3.RELEASE 虽然Bean的创建可以采用BeanDefinition API 也可以直接采用注解方式

  • Spring Bean生命周期之Bean的注册详解

    目录 前言 BeanFactory的继承体系 Bean的注册 alias别名的注册 总结 前言 上篇文章介绍了Bean元信息的配置与解析过程,限于篇幅Bean注册过程就没展开. 这里主要围绕BeanDefinitionReaderUtils#registerBeanDefinition展开分析下Bean注册过程 public static void registerBeanDefinition( BeanDefinitionHolder definitionHolder, BeanDefinit

  • Spring Bean生命周期之BeanDefinition的合并过程详解

    目录 前言 BeanDefinition的合并源码分析 总结 写在前面 注:本文章使用的 SpringBoot 版本为 2.2.4.RELEASE,其 Spring 版本为 5.2.3.RELEASE 前言 书接上文,BeanDefinition注册到IoC容器后,紧接着就是要使用Bean了,要使用必须先要获取Bean,这里我们就以DefaultListableBeanFactory#getBean方法来引出本次讨论的内容:BeanDefinition的合并 通过前面的章节我们了解到了BeanD

  • Spring Bean生命周期之Bean的实例化详解

    目录 前言 实例化前阶段 实例化阶段 实例化后阶段 总结 前言 上一节说到了BeanDefinition的合并过程,这节该说Bean的实例化过程了.根据AbstractAutowireCapableBeanFactory#createBean源码逻辑 可将实例化过程分为实例化前阶段.实例化过程.实例化后阶段. 实例化前阶段 protected Object createBean(String beanName, RootBeanDefinition mbd, @Nullable Object[]

随机推荐