zoukankan      html  css  js  c++  java
  • 好记性不如烂笔头86-spring3学习(7)-ApplicationContext中bean的生命周期

    假设使用ApplicationContext来生成、管理Bean, 一个Bean从建立到销毁,会历经几个运行阶段。
    我个人理解一般的bean的生命周期主要包含:建立,初始化,使用阶段,销毁四个核心阶段。使用ApplicationContext 和BeanFactory对bean的生命周期来看,宏观上基本同样,微观上有一些差异。

    假设使用ApplicationContext来生成并管理Bean。在运行BeanfactoryAware的
    setBeanFactory()阶段之后。若Bean类上有实现org.springframework.context.ApplicationContextAware接口,则运行setApplicationContext()方法,接着才继续进行BeanPostProcessors的processBeforeInitialization()及之后的流程。

    在非WEB应用程序中。若想在关闭容器之前调用Bean定义文件里Singleton的Bean所设置的destroy方法。则能够运行AbstractApplicationContext的registerShutdownHook()方法,并向JVM注冊相关方法。比如:
    AbstractApplicationContext context = new ClassPathXmlApplicationContext
    (“beans-config.xml”);
    context.registerShutdownHook();
    //运行应用程序

    在应用程序结束之前,Bean定义文件上所设置的destroy方法将会被调用运行。
    假设使用BeanFactory,仅仅有在使用getBean()方法真正取得Bean时,才会做实例化的动作
    假设使用ApplicationContext,则会预先针对Bean定义文件的内容,将全部的Bean实例化。假设这不是你想要的,能够在上设置”lazy-init”属性为”true,ApplicationContext 就不会在启动的时候针对该Bean作实例化的动作。比如:

    <bean id="some" class="org.bearfly.bean.Some lazy-init="true"></bean>
  • 相关阅读:
    MSMQ, WCF and IIS: Getting them to play nice (Part 2)[转]
    c#通用函数[转]
    MSMQ, WCF and IIS: Getting them to play nice (Part 1)[转]
    Building a Pub/Sub Message Bus with Wcf,Msmq,IIS
    关于virtual,new,override用法详解
    wcf服务代理层添加wcf服务异步代理
    HttpModule教程
    创造和把握职位升迁的10条规则
    wcf服务代理层添加wcf服务异步代理
    windows server 2008下IIS设置问题
  • 原文地址:https://www.cnblogs.com/jzssuanfa/p/7074303.html
Copyright © 2011-2022 走看看