Bean 在 Spring 容器中的生命周期

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

 

配置在Spring中的Bean在Spring容器中从加载到销毁会经历那些过程呢?如果实现一些特定的Spring接口,这些特定接口的方法会在什么时候被调用呢?本文简单介绍一下这些过程.

Bean在Spring容器中的生命周期如下图所示:

 

1,调用Bean的构造函数(或者工厂方法)实例化Bean.
2,对Bean的成员变量赋值.
3,如果Bean实现了BeanNameAware,调用Bean的setBeanName方法.
4,如果Bean实现了BeanFactoryAware,调用Bean的setBeanFactory方法.
5,如果Bean实现了ApplicationContextAware,调用Bean的setApplicationContext方法.
6,如果容器中配置了BeanPostProcessor,调用BeanPostProcessor的postProcessBeforeInitialization方法(如果有多个BeanPostProcessor,调用每一个BeanPostProcessor的postProcessBeforeInitialization方法).
6,如果Bean实现了InitializingBean,调用Bean的afterPropertiesSet方法.
7,如果Bean配置了init-method方法,调用init-method配置的Bean方法.
8,如果容器中配置了BeanPostProcessor,调用BeanPostProcessor的postProcessAfterInitialization方法.(如果有多个BeanPostProcessor,调用每一个BeanPostProcessor的postProcessAfterInitialization方法).
9,Bean处于可以使用的状态.
10,Spring容器关闭.
11,4,如果Bean实现了DisposableBean,调用Bean的destroy方法.
12,如果Bean配置了destroy-method方法,调用destroy-method配置的Bean的方法.

实例:LifeCycleBean implements InitializingBean, DisposableBean,BeanNameAware,BeanFactoryAware, ApplicationContextAware,配置了init-method="init" destroy-method="cleanup",容器中有两个BeanPostProcessor

public class LifeCycleBean implements InitializingBean, DisposableBean,
  BeanNameAware,BeanFactoryAware, ApplicationContextAware {
 private String str = "default";
 public LifeCycleBean() {
  System.out.println("construct LifecycleBean ***************");
 }
 public LifeCycleBean(String str) {
  this.str = str;
 }
 public String getStr() {
  return str;
 }
 public void setStr(String str) {
  System.out.println("setStr ***************");
  this.str = str;
 }
 public void init() {
  System.out.println("init mtd ***************");
 }
 public void cleanup() {
  System.out.println("cleanup mtd ***************");
 }
 
 public void afterPropertiesSet() throws Exception {
  System.out.println("afterPropertiesSet ***************");
 }
 public void destroy() throws Exception {
  System.out.println("destroy ***************");
 } 
 public void setApplicationContext(ApplicationContext arg0)
   throws BeansException {
  System.out.println("setApplicationContext***************");
 }
 public void setBeanFactory(BeanFactory arg0) throws BeansException {
  System.out.println("setBeanFactory***************");
 }
 public void setBeanName(String arg0) {
  System.out.println("setBeanName***************" + arg0);   
 }
}
public class MyBeanPostProcessor implements BeanPostProcessor {
    public Object postProcessBeforeInitialization(Object bean, String beanName)
            throws BeansException {
        System.out.println("************** MyBeanPostProcessor postProcessBeforeInitialization Bean '" + beanName);
        return bean;
    }
    public Object postProcessAfterInitialization(Object bean, String beanName)
            throws BeansException {
        System.out.println("************** MyBeanPostProcessor postProcessAfterInitialization Bean '" + beanName);
        return bean;
    }
}


 

 

注:本文转载自:http://www.linuxidc.com/Linux/2014-04/100027.htm

 

Spring.容器生命周期 Spring bean生命周期 阅读详情

相关推荐

Spring生命周期

Spring作为当前Java最流行、最强大的轻量级框架,受到了程序员的热烈欢迎。准确的了解Spring Bean生命周期是非常必要的。我们通常使用ApplicationContext作为Spring容器。这里,我们讲的也是 ApplicationContext中Bean生命周期。而实际上BeanFactory也是差不多的,只不过处理器需要手动注册。 转载请注明地址 http://www.cnblogs.com/zrtqsk/p/3735273.html,谢谢。 一、生命周期流程图:   Spri.

ThinkStu的博客 6046

SpringBean生命周期

Spring Bean生命周期是从Bean 实例化之后,即通过反射创建出对象之后,到Bean成为一个完整对象,最终存储到单例池中,这个过程被称为Spring Bean生命周期Spring Bean生命周期大体上分为四个阶段:实例化——>属性注入——>初始化——>销毁。 一、实例化Bean:根据配置文件中Bean 的定义,利用Java Reflection反射技术创建Bean的实例 实例化Bean:根据配置文件中Bean的定义,利用Java反射反射技术创建Bean的实例。

weixin_71786285的博客 4950

Spring容器生命周期

Spring容器生命周期 执行ConfigurableApplicationContext.refresh() 方法是Spring容器生命周期开始的主要入口点. 而调用BeanDefinitionRegistryPostProcessor和BeanFactoryPostProcessor两个后置处理是最重要的一个步骤,因为其会触发ConfigurationClassPostProcessor执行postProcessBeanDefinitionRegistry(BeanDefinitionRegistry

Brucelwl的博客 3282

spring Bean的完整生命周期

spring 容器中的bean的完整生命周期一共分为十一步完成。 1.bean对象的实例化 2.封装属性,也就是设置properties中的属性值 3.如果bean实现了BeanNameAware,则执行setBeanName方法,也就是bean中的id值 4.如果实现BeanFactoryAware或者ApplicationContextAware ,需要设置setBeanFactory或者上下...

qq_32907491的博客 997

Spring容器Bean生命周期

Spring容器Bean生命周期Spring in Action)1. 常见的应用上下文2. Bean生命周期 在基于Spring的应用中,你的应用对象生存于Spring容器中。Spring容器负责创建对象、封装它们、配置它们并管理它们的整个生命周期,从生存到死亡(在这里可能就是new到finalize)。 容器Spring框架的核心。Spring容器使用DI管理构成应用的组件,它会创建相互...

ttyy1112的专栏 669

【JAVA】Spring 容器Bean生命周期

Spring 容器Bean生命周期

weixin_37559642的博客 1140

Spring中IOC容器Bean生命周期

IOC容器Bean生命周期 文章目录IOC容器Bean生命周期一、IOC容器的初始化过程二、Bean生命周期 一、IOC容器的初始化过程 IOC容器是一个Map(可以通过 getBean() 获取到对应key的value,value存放的是对象) 先放一张整体的流程图 关于上图的说明: BeanDefinition <!--假设有如下的bean信息--> <context:property-placeholder location="dbconfig.properties"

立志成为一个前端、后端、测试全方位发展的程序员 1107

Spring Bean生命周期Spring容器

Spring Bean生命周期 众所周知,Spring中的beanSpring容器负责管理,包括对象的整个生命周期:创建、装配、销毁。 具体的生命周期通过下图可以描述: 说明如下: Spring实例化一个bean,默认是单例的。 Springbean进行依赖注入。 如果bean实现了BeanNameAware接口,则将bean的id传给setBeanNameAware方法。 如果bean实现了BeanFactoryAware接口,则将beanFactory实例传给setBeanFactory方法。

xiaoyi52的专栏 796

1.SpringBean容器及其Bean生命周期

1.Bean容器     对应Spring应用,应用对象存活于Spring容器中(container),Spring容器负载对象的创建、配置、装载以及对象的生命周期的管理。     Spring容器可以分为两组不同的类型: Bean工厂(由org.springframework.beans.factory.BeanFactory接口定义)是最简单的容器,提供基本的DI支持; 应用上下文(由...

MIT的博客 506

Spring IOC 容器Bean生命周期

Spring IOC 容器Bean生命周期 Spring IOC 容器可以管理 Bean生命周期, Spring 允许在 Bean 生命周期 的特定点执行定制的任务。 Spring IOC 容器Bean生命周期如下: ① . 通过构造器或工厂方法创建 Bean 实例 : 调用构造器 ② . 为 Bean 的属性设置值和对其他 Bean 的引用 : 调用 set...

Ymh_Sirius的博客 508

Spring容器Bean生命周期

Spring容器Bean生命周期 1.instantiate bean对象实例化 2.populate properties 封装属性 3.如果Bean实现BeanNameAware 执行 setBeanName 4.如果Bean实现BeanFactoryAware 或者 ApplicationContextAware 设置工厂 setBeanFactory 或者上下文对象 setApplic...

weixin_45884943的博客 138

Spring IOC 容器bean生命周期

Spring IOC 容器可以管理bean生命周期spring允许在bean生命周期内对其执行特定的任务。 spring IOC 容器bean生命周期进行管理过程 1 通过构造器或者工厂方法创建bean实例 2 为bean的属性设置值或者引用其他bean实例 3 执行 bena初始化方法 4 使用bean 实例 5 关闭容器时候,执行bean销毁方法 废话不多说上代码: User实体类 ...

. 614

Spring 容器Bean生命周期

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34402090的博客 155

BeanSpring容器中的生命周期

BeanSpring容器中的生命周期如下图所示: 1,调用Bean的构造函数(或者工厂方法)实例化Bean. 2,对Bean的成员变量赋值. 3,如果Bean实现了BeanNameAware,调用Bean的setBeanName方法. 4,如果Bean实现了BeanFactoryAware,调用Bean的setBeanFactory方法. 5,如果Bean实现了Applicatio

牵挂著你是那颗我的心 飘呀飘地在你面前捉摸不定 牵挂著你是那份我的情 吹呀吹到你的眼前我的心 我不愿看到你那湿润的眼睛 怕我会忍不住疼你怕你伤心 我不愿听见你说寂寞的声音 怕我会忍不自你说我的真感情 611

Spring实战之容器、上下文、Bean生命周期

Spring实战之容器、上下文、Bean生命周期

小蜗牛的博客 629

探索Spring系列(一)Spring容器Bean生命周期

前言 不知不觉毕业已经三年有余,前面的时间一直忙于工作上的事情,最近稍微有点空闲时间,就准备梳理下自己的知识体系,发觉得自己的知识体系很是混乱和不足,正巧手中有一些书籍,借此机会好好学习和梳理一番,也希望自己的一点小小记录能分享给各位,带给大家一些收获。 一:Spring容器 Spring容器负责创建,管理对象,对象的整个生命周期都是由容器(container)负责的,下面是Spring容器的接...

weixin_34132768的博客 197

Spring IOC容器启动流程(Bean生命周期

传统方式:顾客(调用者)直接向厨师(被依赖对象)点餐,需要自己知道厨师是谁、如何联系厨师。 IoC方式:顾客只需告诉服务员(IOC容器)"我要一份牛排",服务员会自动安排厨师做好并送到桌前。顾客不需要关心厨师是谁、如何制作。

m0_60697978的博客 1029

Spring容器bean生命周期

在传统的Java应用中,bean生命周期很简单。使用Java关键字new进行bean实例化,然后该bean就可以使用了。一旦该bean不再被使用,则由Java自动进行垃圾回收。相比之下,Spring容器中的bean生命周期就显得相对复杂多了。正确理解Spring bean生命周期非常重要,因为你或许要利用Spring提供的扩展点来自定义bean的创建过程。下图展示了bean装载到Spring应用上下文中的一个典型的生命周期过程。 beanSpring容器中从创建到销毁经历了若干阶段,每一阶段都可以

m0_67402026的博客 130
上一篇: 去掉 Eclipse 的 “Quick Access” 工具栏
下一篇: LigerUI 表格 LigerGrid 动态结合 Struts2 获取数据
DavidHsing
博客等级 码龄19年 781粉丝 127原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值