`
Scliu123
  • 浏览: 41372 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
最近访客 更多访客>>
社区版块
存档分类
最新评论

Spring核心技术----Bean的生命周期

阅读更多
   在Spring中,从BeanFactory或ApplicationContext取得的实例为Singleton,也就是预设为每一个Bean的别名只维持一个实例。

    使用Singletion模式产生单一实例,对单线程的程序来说并不会有什么问题,当对于多线程的程序,必须注意到线程安全(Thread-safe)的议题,防止多个线程同时存取共享资源所引起的数据不同步问题。


    然而Spring中,可以设定每次从BeanFactory或ApplicationContext指定别名并取得Bean时产生一个新的实例,例如:

.................

singleton="false"[/b]>


.................

  "singleton"属性预设是"true",藉由将其设定为"false",则每次指定别名来取得Bean时都产生一个新的实例。



  一个Bean从建立到销毁,如果是使用BeanFacotory来生成,管理Bean的话,会经历几个执行阶段:

  •    Bean的建立  (由BeanFactory读取Bean定义文件,并生成各个Bean实例)
  •    属性注入  (执行相关的Bean属性依赖注入)
  •    BeanNameAware的setBeanName()   (如果Bean类由实现org.springframework.beans.factory.BeanNameAware接口,则执行它的setBeanName()方法。)



  •    BeanFactoryAware的setBeanFactory()  (如果Bean类由实现org.springframework.beans.factory.BeanFactoryAware接口,则执行它的setBeanFactory()方法。)



  • BeanPostProcessors的processBeforeInitialization() (如果任何的org.springframework.beans.factory.cofig.Bean.PostProcessors实例与Bean实例关联,则执行BeanPostProcessors实例的processBeforeInitialization()方法)



  • initializingBean的afterpropertiesSet()  (如果Bean类由实现org.springframework.beans.factory.initializingBean接口,则执行它的afterpropertiesSet()方法.)



  • Bean定义文件中定义init-method (可以在Bean定义文件使用"init-method"属性设定方法名称。例如:.如果有以上设定的话,则进行至这个阶段时,就会执行init-method指定的方法。)



  • BeanPostProcessors的processaAfterInitialization() (如果任何的org.springframework.beans.factory.cofig.Bean.BeanPostProcessors实例与Bean实例关联,则执行BeanPostProcessors实例的processaAfterInitialization()方法)



  • DisposableBean的destory()  (在容器关闭时,如果Bean类有实现org.springframework.beans.factory.DisposableBean接口,则执行它的destory()方法)



  • Bean定义文件中定义destory-method () (在容器关闭时,可以在Bean定义文件中使用"desotry-method"属性设定方法名称。如:,若有以上设定,则在这个阶段,就会执行destory-method指定的方法。)


========================================

  如果是使用ApplicationContext来生成并管理Bean的话则稍有不同,在执行BeanFactoryAware的setBeanFactory阶段之后,若Bean类有实现org.springframework.context.ApplicationContextAware接口,则执行其setApplicationContext方法,接着继续进行BeanPostProcessors的processBeforeInitialization()及之后的流程。
分享到:
评论

相关推荐

    spring bean的生命周期

    Spring Bean的生命周期是Spring框架中的核心概念,它涵盖了Bean从创建到销毁的全过程。了解这一过程对于优化应用程序的性能和管理资源至关重要。在Spring中,Bean的生命周期主要分为以下几个阶段: 1. **初始化阶段...

    Spring框架(spring-framework-5.2.6.RELEASE)的jar包

    Core模块提供了ApplicationContext接口,它是Spring应用程序的核心,负责管理bean的生命周期和配置。Beans模块则实现了bean的定义、实例化、装配和管理。 2. **Data Access/Integration**:这个模块支持数据访问,...

    spring-beans-3.0.xsd

    在Spring框架中,`spring-beans`是核心组件之一,它负责管理对象的生命周期和依赖关系。`spring-beans`的配置文件通常以`.xsd`为后缀,这些文件定义了XML Schema,用于验证Spring配置文件的语法和结构。本文将深入...

    spring-framework-1.0-m2.zip

    首先,IoC容器是Spring的核心,它负责管理对象的生命周期和依赖关系。在1.0-m2中,IoC容器通过XML配置文件来定义对象的实例化和它们之间的依赖关系,这使得程序的耦合度降低,更易于测试和维护。例如,开发者可以...

    spring-5.3.9-dist.zip(spring-framework-5.3.9)

    每个模块都有相应的jar包,例如`spring-context.jar`提供了上下文支持,`spring-beans.jar`处理bean的生命周期,而`spring-webmvc.jar`则用于构建Web应用程序。5.3.9版本的库可能包含了对Java 8及更高版本的支持,...

    spring-context-4.2.xsd.zip

    此外,`<bean>`元素还支持通过`init-method`和`destroy-method`属性指定bean的初始化和销毁方法,以进行自定义的生命周期管理。 `spring-context-4.2.xsd`还定义了处理bean作用域(scope)、AOP代理(proxy)、事件...

    官方完整包 spring-framework-5.3.7.RELEASE-dist.zip

    - **Bean容器**:是Spring的核心,负责管理对象的生命周期和依赖关系,通过XML或注解实现bean的配置。 - **AOP**:提供面向切面编程,允许开发者定义方法拦截器和切点,实现代码的解耦和模块化。 3. **模块详解**...

    spring-framework-4.3.30.RELEASE-dist.zip

    每个jar包都有特定的功能,例如`spring-context`负责上下文管理,`spring-beans`处理Bean的生命周期,`spring-web`支持Web应用程序,还有其他如AOP(面向切面编程)、JDBC、ORM(对象关系映射)等模块。开发者可以...

    spring-framework-reference-4.3.19.pdf

    控制反转(IoC)容器负责管理对象的生命周期和配置,从而实现了依赖注入。 - **框架模块**: - **核心容器**:包括Beans、Core、Context等模块,提供核心功能,如BeanFactory、ApplicationContext等。 - **AOP与...

    官方原版完整包 spring-framework-5.3.1.RELEASE.zip

    IoC允许开发者通过配置来管理对象的生命周期和依赖关系,使得代码更加松耦合。 2. **spring-beans**: 支持Bean工厂和XML配置,是IoC容器实现的基础。 3. **spring-context**: 扩展了IoC容器,引入了上下文概念,...

    struts2-spring-plugin-2.2.1.jar

    Spring框架的核心是IoC(Inversion of Control)容器,它负责管理对象的生命周期和对象间的依赖关系。 **Struts2与Spring的集成** 在没有Struts2-Spring-Plugin的情况下,要在Struts2应用中使用Spring,需要手动...

    spring-framework-5.0.2.RELEASE-dist.zip

    它们负责管理对象的生命周期和依赖注入,使得开发者可以轻松地创建和配置Bean。5.0版本增强了配置元数据支持,包括XML、Java注解以及基于Java的配置。 在数据访问层,Spring Framework 5.0.2.RELEASE改进了对JDBC、...

    spring-framework-5.3.20

    1. **Core Container**:核心容器包含Bean工厂(BeanFactory)和应用上下文(ApplicationContext),它们负责管理对象的生命周期和依赖注入。 2. **Data Access/Integration**:数据访问模块包括JDBC、ORM(Object-...

    spring-framework-4.2.0.RELEASE官方完整包加官方文档

    此外,Spring的容器是整个框架的核心,它管理所有bean的生命周期。在4.2.0版本中,容器的启动速度得到了提升,同时增强了对 Profiles 的支持,使得环境特定的配置变得更加容易。 文档方面,`spring-framework-4.2.0...

    spring-framework-4.2.4.RELEASE.7z

    例如,`spring-context.jar`是核心容器的一部分,负责bean的生命周期管理和依赖注入;`spring-webmvc.jar`支持MVC模式,用于处理HTTP请求。开发者可以根据项目需求选择合适的库。 `schema`文件夹通常包含Spring配置...

    详解Spring中Bean的生命周期和作用域及实现方式

    Spring中Bean的生命周期和作用域及实现方式 Spring是一个非常流行的Java应用程序框架,它提供了一个灵活的机制来管理Bean的生命周期和作用域。Bean的生命周期和作用域是Spring框架中两个非常重要的概念,它们决定了...

    简单Spring框架模拟器--Demo

    在这里,你会了解到BeanFactory是如何作为容器,管理Bean的生命周期,以及如何通过配置文件来声明和实例化Bean。 接着,“tiny-spring-step-2-abstract-beanfactory-and-do-bean-initilizing-in-it.zip”进一步深入...

    Spring bean生命周期demo

    接下来,我们将深入探讨Spring Bean生命周期的各个阶段,并通过具体的示例来演示。 1. **配置阶段** 在Spring容器初始化时,它会读取配置文件(如XML或Java配置),解析Bean定义,包括其依赖关系、初始化方法、...

    spring-framework-4.3.29.RELEASE.zip

    - **IoC(Inversion of Control)容器**:它是Spring的核心,负责管理对象的生命周期和依赖关系,通过XML配置或注解实现控制反转,降低了组件间的耦合度。 - **AOP(Aspect Oriented Programming)**:Spring的...

    spring-framework-4.2.3.RELEASE-dist

    Core Container包括Bean Factory和ApplicationContext,它们是Spring的基础,负责管理对象的生命周期和依赖注入。 2. **依赖注入(Dependency Injection, DI)**: Spring 4.2.3.RELEASE中的DI允许开发者通过配置...

Global site tag (gtag.js) - Google Analytics