Spring学习笔记之Spring的bean生命周期

导读:
  在Spring中从BeanFactory或ApplicationContext取得的实例为Singleton(单例)即每个Bean别名只有一个
  
  实例,Singleton模式产生单例对单线程程序来说不是什么问题,但是对于多线程程序,你就必须注意他的线程
  
  安全(Thread-Safe),防止数据共享发生数据不同步的问题!在Spring中使用singleton属性来控制是否为单例
  
  如果singleton=“true”则会每次都生成一个新的实例!
  
  一个bean从建立到销毁,如果从BeanFactory生成、管理Bean的话,会经历如下几个执行阶段:
  1、Bean的建立
  
  由BeanFactory读取Bean定义文件,并生成各个Bean实例。
  
  2、属性注入
  
  执行相关的Bean属性依赖注入。
  
  3、BeanNameAware的setBeanName()
  
  如果Bean类有实现org.springframework.beans.factory.BeanNameAware接口,则执行它的setBeanName()方法。
  
  4、BeanFactoryAware的setBeanFactory()
  
  如果Bean类有实现org.springframework.beans.factory.BeanFactoryAware接口则执行setBeanFactory()方法。
  
  5、BeanPostProcessors的processBeforeInitialization()
  
  如果任何的org.springframework.beans.factory.config.Bean PostProcessors实例与任何的Bean关联则执行方法。
  
  6、initializingBean的afterPropertiesSet()
  
  如果实现了org.springframework.beans.factory.InitializingBean接口,则执行该方法
  
  7、Bean定义文件中定义init-method
  
  可以在Bean定义文件中使用init-method属性设置方法名称,如:
  
  <bean init-method="initBean" class="com.lj.bean.HelloWorld" id="hello">
  
  则在该阶段会执行initBean()方法。
  
  
  8、BeanPostProcessors的processaAfterInitialization()
  
  如果任何的BeanPostProcessors实例与Bean实例关联,执行PostProcessors实例的processaAfterInitialization()
  
  方法。
  
  9、DisposableBean的destroy()
  
  在容器关闭时,如果Bean类实现了org.springframework.bean.factory.DisposableBean接口,则执行它的destroy()
  10、Bean定义文件中的destroy-method
  
  在容器关闭时执行该方法如
  
  </bean><bean destroy-method="destroyBean" class="com.lj.beans" id="hello">
  
  方法。
  Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1624904
  [收藏到我的网摘] [发送Trackback] 雁云杰发表于 2007年05月25日 02:04:00

本文转自
http://blog.csdn.net/sanmaoyouxiao/archive/2007/05/25/1624904.aspx

你可能感兴趣的:(spring,多线程,.net,bean,Blog)