注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

Study Desk

Share my desk with you!......

 
 
 

日志

 
 

Bean生命周期(Spring)  

2007-01-04 15:36:36|  分类: 计总会 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

Spring中,从BeanFactoryApplicationContext取得的实例为Singleton,也就是预设为每一个Bean的别名只维持一个实例。

Spring中,“singleton”属性预设为“true”,如果设为“false”,则每次指定别名来取得Bean时都会产生一个新的实例。

使用Singleton模式产生单一实例,对单线程的程序来说并不会有问题,但对于多线程的程序来说,就要注意线程安全的问题了。

 

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

Ø  Bean的建立:有BeanFactory读取Bean 定义文件,并生成各个Bean实例。

Ø  属性注入:执行相关的Bean属性依赖注入。

Ø  BeanNameAwaresetBeanName():如果有实现BeanNameAware接口。

Ø  BeanFactoryAwaresetBeanFactory():如果有实现BeanFactoryAware接口。

Ø  BeanPostProcessorporcessBeforeInitialization():如果有实现BeanPostProcessor接口。

Ø  InitializingBeanafterPropertiesSet():如果有实现InitializingBean接口。

Ø  Bean 定义文件中定义init-method

可以在Bean定义使用“init-method”属性设定方法名称,例如

<bean style="COLOR: #4f6228; FONT-FAMILY: 宋体; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-themecolor: accent3; mso-themeshade: 128">包.HelloBean” init-method=”initBean”>

如果以上有设定的话,则进行至这个阶段时,就会执行initBean()方法。

Ø  BeanPostProcessorprocessAfterInitialization():如果有实现BeanPostProcessor接口。

Ø  DisposableBeandestroy():如果有实现DisposableBean接口。

Ø  Bean定义文件中定义destroy-method

在容器关闭时,可以在Bean定义文件中使用“destroy-method”属性设定方法名称,例如:

<bean style="COLOR: #4f6228; FONT-FAMILY: 宋体; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-themecolor: accent3; mso-themeshade: 128">包.HelloBean” destroy-method=”destroyBean”>

如果以上有设定的话,则进行至这个阶段时,就会执行destroyBean ()方法。

如果是使用ApplicationContext来生成管理Bean的话则有些不同,使用ApplicationContext来生成及管理Bean实例的话,在执行BeanFactoryAwaresetBeanFactory()阶段之后,若Bean类上有实现org.springframework.context.ApplicationContextAware接口,则执行其setApplicationContext()方法,接着才继续进行BeanPostProcessorsprocessBeforeInitialization()及之后的流程。

 

  评论这张
 
阅读(510)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017