标签:
生命周期图如下:
Bean的完整生命周期经历了各种方法调用,这些方法可以划分为以下几类:
以dubbo的ServiceBean为例,它实现了下面接口:
public class ServiceBean<T> extends ServiceConfig<T> implements InitializingBean, DisposableBean, ApplicationContextAware, ApplicationListener, BeanNameAware
1、InitializingBean
Spring 在设置完一个bean所有的属性后,会检查bean是否实现了InitializingBean接口,如果实现就调用bean的 afterPropertiesSet方法。另外,如果bean是单例的,则afterPropertiesSet方法只会被调用一次;否则每次创建 bean时afterPropertiesSet方法都会被重新调用.
参考: http://essay.iteye.com/blog/1775229
2、DisposableBean
DisposableBean就是在一个bean被销毁的时候,spring容器会帮你自动执行这个方法。
参考: http://www.cnblogs.com/zr520/p/4894554.html
3、ApplicationContextAware
其实我们看到---Aware就知道是干嘛用的了,就是属性注入的,但是这个ApplicationContextAware的不同地方在于,实现了这个接口的bean,当spring容器初始化的时候,会自动的将ApplicationContext注入进来。
加载Spring配置文件时,如果Spring配置文件中所定义的Bean类实现了ApplicationContextAware 接口,那么在加载Spring配置文件时,会自动调用ApplicationContextAware 接口中的
public void setApplicationContext(ApplicationContext context) throws BeansException
方法,获得ApplicationContext 对象。
参考:http://uule.iteye.com/blog/821712
4、ApplicationListener
如果在上下文中部署一个实现了ApplicationListener接口的bean,
那么每当在一个ApplicationEvent发布到 ApplicationContext时,
这个bean得到通知。其实这就是标准的Oberver设计模式。
参考:http://blog.csdn.net/ilovejava_2010/article/details/7953419
5、BeanNameAware
让Bean获取自己在BeanFactory配置中的名字(根据情况是id或者name)。
通过实现BeanNameAware接口,接口中就一个方法setBeanName()
参考: http://langgufu.iteye.com/blog/1499966
参考:
http://www.cnblogs.com/zrtqsk/p/3735273.html
标签:
原文地址:http://www.cnblogs.com/ghj1976/p/5383743.html