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

入门 07 - Bean生命周期

阅读更多


 在Spring中,从BeanFactory取得的实例为Singleton,预设是每一个别名维持一个实例,对单执行绪的程序来说并不会有什么问题,但对于多执行绪的程序,您必须注意到执行绪安全,您也可以设定每次从BeanFactory取得 Bean时,都产生一个新的实例,例如:

<bean id="helloBean" class="onlyfun.caterpillar.HelloBean" singleton="false">


 singleton预设是true,藉由将其设定为false,每次取得Bean时都会产生一个新的实例。
 BeanFactory 负责Bean的生命周期,包括Bean的生成与销毁、Bean的创建方式(是否为singleton)、Bean的属性设定、依赖关联的建立等。如果您要在Bean的生命周期的某个阶段作一些事情,可以有几个方式,第一个方式是实作Spring所提供的相关接口,透过实作 org.springframework.beans.factory.InitializingBean、 org.springframework.beans.factory.DisposableBean,您可以在Bean创建与销毁时作一些事情:

public interface InitializingBean {

    void afterPropertiesSet() throws Exception;

}

 

public interface DisposableBean {

    void destroy() throws Exception;

}


 实作接口使得Spring的特定接口侵入Bean的实作中,这并不是个很好的作法,考虑到Bean的可移植性,您可以考虑统一Bean的初始化与销毁方法,并在Bean定义档中宣告在初始化或销毁Bean时使用这些方法:

<bean id="helloBean" class="onlyfun.caterpillar.HelloBean"

                           init-method="init"

                           destroy-method="destroy">


 在实作Bean时,只要加入这些方法即可,例如:

public class HelloBean {

    public void init() {

        ....

    }  

  

    ....

  

    public void destroy() {

        ....

    }

}


 这样作的好处是可以不引入任何Spring特定的接口,使得Bean可以轻易的从Spring框架中脱离,只要您所采用的另一个框架可以支持您所自订的初始化与销毁方法,Bean就不用任何的修改,然而这个方法事实上还是依赖于容器,容器必须有呼叫这些方法的能力,只是 这些方法的名称可以由我们自行决定,而不用实现特定的接口。
 除了上面两种方式,您还可以在Bean的建构函式或setter中作一些类似的初始化动作,这可以使得Bean不依赖于特定接口或容器功能,然而销毁时的动作就比较麻烦,因为finalize()执行的时间是由GC决定的,您只能在当中放一些不是实时性需求的销毁相关动作。

分享到:
评论

相关推荐

    spring bean XML配置入门

    一旦XML配置加载到Spring容器中,容器将根据配置创建Bean实例,并按照定义进行初始化、依赖注入,最后完成Bean的生命周期管理。 10. **实践操作**: 在实际开发中,我们可以使用Eclipse的Spring插件来简化Bean...

    spring入门学习-3、Bean装配(XML).pdf

    Bean的作用域定义了Bean的生命周期以及Spring容器如何管理这些Bean的实例。Spring提供了多种作用域: 1. **Singleton**:单例模式,是Spring默认的作用域。在整个应用期间,Spring IoC容器只会为每个Bean定义创建一...

    ejb入门录像 sessionBean

    Session Bean的生命周期包括实例化、激活、被动使用(调用方法)、钝化(不再被调用)和销毁。在录像中,会讲解如何控制这些阶段,以及它们对性能和资源管理的影响。 5. **事务管理**: EJB提供了自动事务管理,...

    spring入门学习-hello,world

    依赖注入是Spring的核心特性,它允许我们通过容器来管理对象的生命周期和对象之间的关系,而不是在代码中硬编码这些依赖关系。这使得我们的代码更加灵活,易于测试和维护。 创建Spring项目的第一步通常是配置Spring...

    JBI开发指南(Servicemix开发指南)

    这种方式允许开发者使用Spring框架来管理POJO的生命周期,从而使得业务逻辑更加灵活和易于维护。 总的来说,JBI开发指南(ServiceMix开发指南)是一份珍贵的资源,为开发者提供了一条学习JBI和ServiceMix的入门之路...

    Spring入门操作代码,bean

    通过定义DAO(Data Access Object)接口和实现,可以设计查询方法,Spring容器会自动管理这些DAO的生命周期,使得在业务逻辑层可以直接调用查询方法。 修改客户信息:更新操作与新增类似,获取需要修改的Customer ...

    Spring从入门到精通 pdf

    - **Bean**:Bean是Spring框架中的基本组成部分,通常指代一个具有生命周期、作用域以及依赖关系的对象。 - **Bean的生命周期**:从创建到销毁的过程,包括初始化和销毁两个阶段。 - **Bean的作用域**:Spring支持...

    SSM模式学习路线-----[Spring入门笔记](csdn)————程序.pdf

    - **Bean的生命周期**:Spring管理的Bean有完整的生命周期,包括初始化、使用和销毁,可以自定义生命周期回调方法。 总结,Spring框架通过IOC和DI实现了对象的解耦和灵活管理,提供了AOP进行横切关注点的处理,...

    EJB Dev 1: EJB入门例子

    EJB容器是Java EE服务器的一部分,它负责管理Bean的生命周期、事务、安全性、并发性和资源分配。开发者只需编写Bean的业务逻辑,其余的由容器自动处理。 **3. 开发EJB应用** 本示例可能包含两个主要部分: - `...

    轻量级远程服务调用Hessian的入门实例和与Spring整合的实例.zip

    这样,服务提供者和消费者都可以作为Spring的bean进行管理,使得服务的生命周期与Spring应用上下文同步。 1. 服务提供者配置: 在服务端,我们需要配置一个HessianExporter,将服务bean与URL绑定,这样...

    spring入门教程之bean的继承与自动装配详解

    Spring作为一个依赖注入(DI)和面向切面编程(AOP)的容器,它管理Bean的生命周期并处理Bean之间的依赖关系。本文将深入探讨Spring Bean的继承与自动装配。 首先,让我们了解Bean的基本定义。在Spring配置文件中,...

    Springboot入门——初学者对Spring Ioc技术的理解与运用,包含Bean生命周期

    Spring Ioc Spring所依赖的两个核心理念:控制反转(Ioc)、面向切面编程(AOP) 初学者可能不理解什么叫控制反转,那么我们来进一步描述一下Ioc...Spring把需要管理的对象叫做Spring Bean(简称Bean),管理这些Bean的容

    Spring从入门到精通

    - **Bean的生命周期:** - **Bean的定义:** Bean的基本配置信息。 - **Bean的初始化:** 定义Bean初始化的方法。 - **Bean的使用:** Bean在应用中的具体用途。 - **Bean的销毁:** 定义Bean销毁的方法。 - *...

    JSFweb开发技术入门基础教程

    JSF 的生命周期包括了多个阶段,例如恢复视图、应用请求值、处理验证、更新模型值、调用应用等。 ##### 7.2 简单实例 创建自定义组件通常涉及到编码、渲染以及与用户界面的交互。下面是一个简单的自定义组件示例:...

    EJB基础入门与总结

    - 回调方法:容器在Bean生命周期的关键事件上调用Bean的方法,例如在合用、持久化、结束事务等操作前后。 - EJBContext接口:Bean通过EJBContext获取关于容器的信息,如客户身份、事务状态,或获取自身引用。 - Java...

    EJB 会话BEAN PPT

    无论是有状态还是无状态会话Bean,它们都有自己的生命周期,包括创建、初始化、活跃、钝化和销毁几个阶段。容器负责管理这些阶段,确保Bean在正确的时间被创建和销毁,从而优化资源使用。 **会话Bean的最佳实践** ...

    J2EE电子商务系统开发从入门到精通--基于Struts和Hibernate技术实现

    - 本章节详细介绍了如何利用J2EE技术栈构建一个企业级的在线综合信息管理系统,从需求分析到系统设计,再到具体实现和后期运维,涵盖了整个项目生命周期的关键环节。 #### 第五章 员工登录系统 **5.1 系统分析和...

    SPRING BEAN的销毁 项目文件(ECLIPSE)

    SPRING BEAN的销毁 项目文件(ECLIPSE)。 之前各种测试,一直有问题。后来明白,容器啊!...容器灰常重要,使用容器促使BEAN的生命周期。 想了两天,这个问题,SPRING从入门到精通这本书真没处理好!

Global site tag (gtag.js) - Google Analytics