您的位置:首页 > 编程语言 > Java开发

spring学习笔记2---bean的生命周期

2007-08-16 14:47 387 查看
5. Bean的生命周期

在Spring中,从BeanFactory或ApplicationContext取得的实例为singlteon的,也就是预设为每一个Bean的别名产生一个实例。即每次取得的对象都是同一个。这样,对于单线程的程序来说,没有问题。但是,对于多线程的程序,可能就会产生资源不同步等一系列问题。因此,在Spring中,可以设定每次从ApplicationContext或BeanFactory中取得Bean的实例时,都产生一个新的实例。实现方式:把singlteon的属性值写成false;其默认是true;
如:<bean id=”hello” class=”src.hello” singlteon=”false”></bean> 这样就OK了。
Bean从建立到销毁,如果使用BeanFactory来生成,管理Bean的话,一般经历以下几个阶段:
① Bean的建立。由BeanFactory读取Bean的定义文件,生成Bean实例。
② 属性依赖注入。
③ 如果Bean类实现了org.springframework.beans.factory.BeanNameAware接口,则执行它的setBeanName()方法。
④ 如果Bean类实现了org.springframework.beans.factory.BeanFactoryAware接口,则执行它的setBeanFactory()方法。
⑤ 如果Bean实例与org.springframework.beans.factory.config.Bean PostProcessors关联,则执行BeanPostProcessor实例的processBeforeInitialization()方法。
⑥ 如果Bean类实现了org.springframework.beans.factory.InitializationBean接口,则执行它的afterPropertiesSet()方法。
⑦ 如果在Bean中定义文件中定义了init-method=”initBean”。则执行initBean()方法。
⑧ 与⑤相呼应,如果Bean实例与BeanPostProcessors实例关联,则执行processAfterInitialization()方法。
⑨ 最后,在容器关闭时,如果在定义文件中定义了destory-method。则执行destoryBean()方法。
⑩ 使用ApplicationContext来生成Bean管理,稍有不同。在执行完BeanFactoryWare后,若Bean实现了org.springframework.context.ApplicationContextAware接口,则执行它的setApplicationContext()方法,则后,按上述流程执行。
个人小总结:一般情况,Bean实例的生成,不会把这些步骤全部执行,一般情况下,只用执行1,2,9这三个步骤就可以了。并且9步在很多实现中,也被省略掉了。这些工作都在代码中来完成。
6.ApplicationContext还有资源的获取、解析文字消息、事件传播的功能接口。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: