导读:
在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