`
jiejie111013
  • 浏览: 6703 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

bean的生命周期

阅读更多

在传统的Java应用中,Bean的生命周期非常简单。Java的关键词new用来实例化Bean(或许他是非序列化的)。这样就够用了。相反,Bean 的生命周期在Spring容器中更加细致。理解Spring Bean的生命周期非常重要,因为你或许要利用Spring提供的机会来订制Bean的创建过程。

1. 容器寻找Bean的定义信息并且将其实例化。
2.受用依赖注入,Spring按照Bean定义信息配置Bean的所有属性。
3.如果Bean实现了BeanNameAware接口,工厂调用Bean的setBeanName()方法传递Bean的ID。
4.如果Bean实现了BeanFactoryAware接口,工厂调用setBeanFactory()方法传入工厂自身。
5.如果BeanPostProcessor和Bean关联,那么它们的postProcessBeforeInitialzation()方法将被调用。
6.如果Bean指定了init-method方法,它将被调用。
7.最后,如果有BeanPsotProcessor和Bean关联,那么它们的postProcessAfterInitialization()方法将被调用。
    到这个时候,Bean已经可以被应用系统使用了,并且将被保留在Bean Factory中知道它不再需要。

 

测试代码:

 

package com.spring.init;
/**
 * 初始化顺序
 */
import org.springframework.beans.BeansException;  
import org.springframework.beans.factory.BeanFactory;  
import org.springframework.beans.factory.BeanFactoryAware;  
import org.springframework.beans.factory.BeanNameAware;  
import org.springframework.beans.factory.DisposableBean;  
import org.springframework.beans.factory.InitializingBean;  
import org.springframework.beans.factory.config.BeanPostProcessor;  
  
public class HelloWorld implements BeanNameAware,BeanFactoryAware, BeanPostProcessor,InitializingBean,DisposableBean{  
  
    private String hello;  
  
    public void setBeanName(String arg0) {  
        System.out.println("调用BeanNameAware的setBeanName()..." );  
    }  
  
    public String getHello() {  
        return hello;  
    }  
  
    public void setHello(String hello) {  
        this.hello = hello;  
        System.out.println("调用setHello()..." );  
    }  
  
    public void customInit() {  
        System.out.println("调用customInit()...");  
    }  
  
    public void customDestroy() {  
        System.out.println("调用customDestroy()...");  
    }  
  
    public Object postProcessAfterInitialization(Object arg0, String arg1)  
            throws BeansException {  
        System.out.println("调用BeanPostProcessor的postProcessAfterInitialization()...");  
        return null;  
    }  
  
    public Object postProcessBeforeInitialization(Object arg0, String arg1)  
            throws BeansException {  
        System.out.println("调用BeanPostProcessor的postProcessBeforeInitialization()...");  
        return null;  
    }  
  
    public void destroy() throws Exception {  
        System.out.println("调用DisposableBean的destory()...");  
    }  
  
    public void afterPropertiesSet() throws Exception {  
        System.out.println("调用InitializingBean的afterPropertiesSet()...");  
    }  
  
    public void setBeanFactory(BeanFactory arg0) throws BeansException {  
        System.out.println("调用BeanFactoryAware的setBeanFactory()...");  
    }  
}  
 

XML:

 

<bean name="helloWorld" class="com.spring.init.HelloWorld"  init-method="customInit" destroy-method="customDestroy" >  
        <property name="hello" value="hello world!"></property>  
    </bean>  

 结果:

 

调用setHello()...
调用BeanNameAware的setBeanName()...
调用BeanFactoryAware的setBeanFactory()...
调用InitializingBean的afterPropertiesSet()...
调用customInit()...
调用BeanPostProcessor的postProcessBeforeInitialization()...
调用BeanPostProcessor的postProcessAfterInitialization()...
调用BeanPostProcessor的postProcessBeforeInitialization()...
调用BeanPostProcessor的postProcessAfterInitialization()...
调用DisposableBean的destory()...
调用customDestroy()...
分享到:
评论

相关推荐

    Spring的bean生命周期

    Bean生命周期的理解对于优化应用性能和理解Spring内部工作原理至关重要。这里我们将深入探讨Spring的Bean生命周期、容器周期以及工厂周期。 首先,让我们从Bean生命周期开始。在Spring中,Bean的生命周期包括以下几...

    Spring bean生命周期demo

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

    Spring Bean生命周期.pdf

    其中,Spring Bean生命周期的管理是Spring框架的核心功能之一,它涉及Spring容器如何创建、配置以及销毁Bean的整个过程。理解Spring Bean的生命周期对于开发高效和可维护的Java应用至关重要。 Spring Bean生命周期...

    spring bean的生命周期

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

    Spring Bean生命周期&BeanDefinitions1

    Spring框架是Java应用开发中的一个核心组件,尤其在企业级应用中广泛使用。Spring通过其IoC(Inversion of Control,控制反转)容器管理Bean的生命周期,...理解Bean生命周期对于有效管理和优化Spring应用至关重要。

    基于java的企业级应用开发:Bean的生命周期.ppt

    实例化过程是Bean生命周期的起点。 2. **依赖注入**: - 在Bean实例化后,Spring会执行依赖注入(Dependency Injection,DI),将所需的属性值注入到Bean中。这可以通过setter方法、构造函数或者字段注入实现。 3...

    Spring框架中Bean的生命周期 Spring中Bean有几种作用域

    Spring中的Bean生命周期主要分为两个阶段:容器管理阶段和用户自定义阶段。在容器管理阶段,Spring容器负责Bean的实例化、属性注入、初始化、使用和销毁。而在用户自定义阶段,开发者可以通过定义回调方法或使用特定...

    Bean生命周期.jpg

    java Bean生命周期.jpg

    浅尝Spring注解开发_Bean生命周期及执行过程.doc

    ingBean 和 DisposableBean 接口 当不使用注解而是通过实现接口的方式来控制 Bean 的生命周期时,可以实现 InitializingBean 和 DisposableBean 接口。这两个接口由 Spring 提供,它们包含两个方法: - ...

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

    本文将详细介绍 Spring Bean 生命周期的概念、生命周期图、生命周期阶段、生命周期管理方式等相关知识点。 一、 Spring Bean 生命周期概述 Spring Bean 生命周期是指 Spring 容器中 Bean 的创建、初始化、销毁等...

    Spring 的 Bean 生命周期,11 张高清流程图及代码,深度解析.docx

    Spring 的 Bean 生命周期,11 张高清流程图及代码,深度解析

    Bean的生命周期介绍

    初始化是Bean生命周期中的一个重要环节,通常包括以下几个步骤: 1. **构造函数创建**:当Bean需要被创建时,Spring会调用其无参构造函数(或通过`@Autowired`注解依赖注入的构造函数)来实例化Bean。 - 如上文...

    spring bean的生命周期测试代码

    本资源提供了在Spring 4.2环境下关于Bean生命周期的测试代码,帮助我们深入理解这一关键概念。 首先,让我们了解Spring Bean的生命周期主要包含以下几个阶段: 1. **实例化**:Spring容器通过`Class`对象或`...

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

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

    SSH笔记-IOC容器中 Bean 的生命周期

    实现`BeanPostProcessor`接口可以让开发者在Bean生命周期的关键时刻插入自定义逻辑,比如验证、缓存管理、AOP代理等。这提供了高度的灵活性,但同时也需要谨慎处理,因为不恰当的处理可能会影响到整个应用的性能和...

    SpringBoot Bean的生命周期demo.zip

    一般情况下,我们只是关心如何正确地将Bean装配到容器中,并不关心Ioc容器是如何装配和销毁Bean的过程。但是恰恰有时候,我们需要自定义初始化或销毁Bean的过程,以满足一些“特殊的”需求。比如,数据源在关闭的...

    08-IoC配置-bean的生命周期控制

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

    Spring管理的Bean的生命周期

    总之,Spring管理的Bean生命周期包括创建、初始化、活跃使用和销毁四个主要阶段,通过各种回调方法、接口和注解,我们可以对Bean的行为进行自定义,以满足不同应用场景的需求。深入理解这些机制,有助于我们更好地...

    Spring Bean 的生命周期

    本篇将详细阐述Spring Bean生命周期的各个阶段,以及如何记忆和深入理解这一过程。 首先,Spring Bean的生命周期可以分为两个主要阶段:容器初始化阶段和容器销毁阶段。 在容器初始化阶段,Spring Bean会经历以下...

Global site tag (gtag.js) - Google Analytics