`
shuofenglxy
  • 浏览: 195361 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

ZZ SPRING中BEAN的生命周期

阅读更多

 

这是一篇转载,原文来自于 http://www.blogjava.net/huxiaowi/archive/2009/06/23/283775.html?opt=admin

作者是 Charleehu

 

 

spring 中,从 BeanFactory ApplicationContext 取得的实例为 Singleton ,也就是预设为每一个 Bean 的别名只能维持一个实例,而不是每次都产生
一个新的对象
使用 Singleton 模式产生单一实例,对单线程的程序说并不会有什么问题,但对于多线程的程序,就必须注意安全 (Thread-safe) 的议题,防止多个线程
同时存取共享资源所引发的数据不同步问题。
然而在 spring 可以设定每次从 BeanFactory ApplicationContext 指定别名并取得 Bean 时都产生一个新的实例:例如:
<bean id="helloBean" class="onlyfun.caterpillar.HelloBean" singleton="false">
spring 中, singleton 属性默认是 true ,只有设定为 false ,则每次指定别名取得的 Bean 时都会产生一个新的实例

一个 Bean 从创建到销毁,如果是用 BeanFactory 来生成 , 管理 Bean 的话,会经历几个执行阶段:
    1
Bean 的建立:
         
BeanFactory 读取 Bean 定义文件,并生成各个 Bean 实例
    2
:属性注入:
         
执行相关的 Bean 属性依赖注入
    3
BeanNameAware setBeanName()
         
如果 Bean 类有实现 org.springframework.beans.BeanNameAware 接口,则执行它的 setBeanName() 方法
    4
BeanFactoryAware setBeanFactory()
         
如果 Bean 类有实现 org.springframework.beans.factory.BeanFactoryAware 接口,则执行它的 setBeanFactory() 方法
    5
BeanPostProcessors ProcessBeforeInitialization()
         
如果任何的 org.springframework.beans.factory.config.BeanPostProcessors 实例与 Bean 实例相关。则执行 BeanPostProcessors 实例
         
processBeforeInitialization() 方法
    6
initializingBean afterPropertiesSet()
         
如果 Bean 类已实现 org.springframework.beans.factory.InitializingBean 接口,则执行他的 afterProPertiesSet() 方法
    7
Bean 定义文件中定义 init-method
         
可以在 Bean 定义文件中使用 "init-method" 属性设定方法名称例如:
          <bean id="helloBean" calss="onlyfun.caterpillar.HelloBean" init-method="initBean">
         
如果有以上设置的话,则执行到这个阶段,就会执行 initBean() 方法
    8
BeanPostProcessors ProcessaAfterInitialization()
         
如果有任何的 BeanPostProcessors 实例与 Bean 实例关联,则执行 BeanPostProcessors 实例的 ProcessaAfterInitialization() 方法
    9
DisposableBean destroy()
         
在容器关闭时,如果 Bean 类有实现 org.springframework.beans.factory.DisposableBean 接口,则执行他的 destroy() 方法
    10
Bean 定义文件中定义 destroy-method
         
在容器关闭时,可以在 Bean 定义文件中使用 "destroy-method" 属性设定方法名称,例如:
          <bean id="helloBean" class="onlyfun.caterpillar.HelloBean" destroy-method="destroyBean">
         
如果有以上设定的话,则进行至这个阶段时,就会执行 destroyBean() 方法,如果是使用 ApplicationContext 来生成并管理 Bean 的话则稍有不同,使用 ApplicationContext 来生成及管理 Bean 实例的话,在执行 BeanFactoryAware setBeanFactory() 阶段后,若 Bean 类上有实现 org.springframework.context.ApplicationContextAware 接口,则执行其 setApplicationContext() 方法,接着才执行 BeanPostProcessors ProcessBeforeInitialization() 及之后的流程

 

 

分享到:
评论

相关推荐

    base zz zz zz zz

    base zz zz zz zz zz base zz zz zz zz zz base zz zz zz zz zz base zz zz zz zz zz

    Spring2.5中文版CHM

    - Spring 2.5引入了对JSR-250规范的支持,例如`@PostConstruct`和`@PreDestroy`注解,使得在bean生命周期管理中更加方便。此外,还增强了切面表达式语言(AspectJ)的支持,允许更精确地定义切点和通知。 3. **...

    Spring整理1

    在Spring应用中,我们通常通过ApplicationContext来管理Bean的生命周期和依赖注入。下面我们将深入探讨Spring初始化、Bean的配置以及一些常用的Bean类型。 首先,Spring的初始化主要是通过ApplicationContext接口来...

    智能工厂产品全生命周期追溯系统架构设计思路及应用场景方案 zz.pptx

    ### 智能工厂产品全生命周期追溯系统架构设计思路及应用场景方案 #### 一、引言 在当今工业4.0时代背景下,智能工厂成为推动制造业转型升级的关键力量。其中,**产品全生命周期追溯系统**是确保产品质量、优化生产...

    小马哥讲 Spring AOP 编程思想 - API 线索图.pdf

    - **DefaultAdvisorAutoProxyCreator**:继承自AbstractAutoProxyCreator,是Spring中默认的自动代理创建器。 4. AOP代理对象的来源和类型 - **TargetSource(目标源)**:被代理对象的来源。 - **...

    Spring3.0中文版

    Spring框架是Java开发中的核心组件,它以其模块化、松耦合的设计理念,极大地简化了企业级应用的构建。Spring3.0是该框架的一个重要版本,它引入了许多新特性和改进,为开发者提供了更强大的功能和更好的灵活性。在...

    atguigu_springboot2_zz-master.zip

    `atguigu_springboot2_zz-master`项目中,可以看到SpringBoot的起步依赖如`spring-boot-starter-web`、`spring-boot-starter-data-jpa`等,它们是预配置的Maven或Gradle模块,包含了开发特定功能所需的依赖,例如...

    SpringMVC+Spring+mybatis+Mysql 客户关系管理系统 可用于毕业设计

    在本项目中,Spring负责管理bean的生命周期和装配,以及事务控制,使得业务逻辑和数据访问层得以解耦,降低了系统的复杂度。 3. **Mybatis**:Mybatis是一款优秀的持久层框架,它支持定制化SQL、存储过程以及高级...

    Spring源码出错,缺失cglib.3.2.6 与 objenesis.2.6

    在本案例中,"Spring源码出错,缺失cglib.3.2.6与objenesis.2.6"这一问题,揭示了Spring框架在运行时对两个重要库的依赖:CGLIB和Objenesis。 CGLIB(Code Generation Library)是一个高性能的代码生成库,主要用于...

    基于Spring MVC+Spring+Mybatis+Mysql 客户关系管理系统 SSM毕业设计

    SSM框架是Java Web开发中常用的一种组合,由Spring MVC、Spring和Mybatis三个组件构成,用于构建高效、灵活的Web应用。这个基于SSM的客户关系管理系统(CRM)毕业设计,利用了Maven进行项目构建,确保了依赖管理的便捷...

    Struts、Spring、Hibernate框架整合

    2. **配置Struts**:在Struts的配置文件中,将Action类设置为Spring管理的Bean,这样Struts在调用Action时会从Spring容器中获取实例。 3. **配置Hibernate**:配置Hibernate的SessionFactory,并在Spring配置文件中...

    ZZ561401.CAB

    ZZ561401.CAB ZZ561401.CAB ZZ561401.CAB

    ZZ_MODIFIED_GEEBINF.ENS.zip

    标题中的"ZZ_MODIFIED_GEEBINF.ENS.zip"是一个压缩包文件,暗示其内容可能包含对EndNote引用样式的一种修改。EndNote是一款流行的参考文献管理软件,它允许用户存储、组织和格式化引用文献。"ZZ_MODIFIED_GEEBINF....

    wincc AX NF ZZ

    wincc SIMATIC WinCC是第一个使用最新的32位技术的过程监视系统,具有良好的开放性和灵活性。 从面市伊始,用户就对SIMATIC WinCC印象深刻。

    zz CAD快速计算长度插件

    在CAD中想要快速测量长度,在CAD工具栏找到加载应用程序,再点击加载 加载成功后在输入栏输入“zz”(不分大小写)在选择你需要测量的线段即可。

    超出NLO QCD的高横向动量的ZZ产生

    最重要的是,我们将来自胶子-胶子通道的胶子-融合ZZ + jet贡献添加到我们的合并样本中,胶子-胶子通道正式是N3LO,并在NLO上为胶子-融合机理提供了近似结果。 这些预测是使用VBFNLO软件包获得的,包括Z玻色子的轻子...

    Spring Security手册

    下面将详细阐述Spring Security的一些核心概念、功能以及如何在实际项目中应用。 1. **核心概念** - **Authentication(认证)**: 用户身份验证,确认用户是否为他们声称的人。Spring Security提供了多种认证机制...

    spring-framework-4.0.4.RELEASE-jar包

    Spring Framework作为Java领域中的一个里程碑,以其强大的功能和灵活的设计,成为Web开发领域的首选框架。4.0.4.RELEASE版本是Spring的重要里程碑,它带来了许多改进和优化,旨在提升开发效率,增强应用程序的稳定性...

    ZZ_MODIFIED_GEEBINF.ENS.zip endnote的样式文件

    标题中的“ZZ_MODIFIED_GEEBINF.ENS.zip”是一个压缩包文件,主要包含一个名为“ZZ_MODIFIED_GEEBINF.ENS”的文件。这个文件是一种特殊格式,用于定义EndNote的引用样式。EndNote是一款强大的文献管理软件,广泛应用...

Global site tag (gtag.js) - Google Analytics