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还有资源的获取、解析文字消息、事件传播的功能接口。
在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还有资源的获取、解析文字消息、事件传播的功能接口。
相关文章推荐
- Spring学习笔记八--Bean生命周期和后置处理器
- spring学习笔记八 bean生命周期
- spring学习笔记整理--04(配置Spring管理的bean的作用域、生命周期)
- Spring学习笔记(1):Bean的生命周期管理
- Spring学习笔记之---bean的生命周期
- Spring学习笔记之Spring的bean生命周期
- Spring学习笔记(2)-Spring中bean的生命周期
- Java框架spring 学习笔记(三):Bean 的生命周期
- spring学习笔记:spring中bean的生命周期
- Spring 学习笔记---Bean的生命周期
- 《Spring 3.x 企业应用开发实战》学习笔记 第三章 IoC容器概述 3.5 Bean的生命周期
- Spring学习笔记二: Bean装配及生命周期
- ITCAST视频-Spring学习笔记(Spring管理的Bean的生命周期)
- Spring学习笔记之bean生命周期
- Spring学习笔记之管理Bean的生命周期
- Spring 学习笔记---Bean的生命周期
- 《Spring 3.x 企业应用开发实战》学习笔记 第三章 IoC容器概述 3.5 Bean的生命周期
- Spring学习笔记二: Bean装配及生命周期
- spring2.5.6学习笔记七:Spring管理的Bean的生命周期
- Spring 学习笔记---Bean的生命周期