Spring笔记(三)Spring容器管理下Bean的生命周期

一、实例化
二、装配(可选)
三、回调(可选)
  1、第一个回调接口BeanNameAware,如果一个Bean继承了该接口,Spring会将配置文件里的id通过setBeanName方法传递过来。
  2、第二个回调接口BeanFactoryAware,如果一个Bean继承了该接口,Spring会将BeanFactory通过setBeanFactory方法传递过来。
    使用例子:
    Bean1为single,Bean2为prototype,Bean2为Bean1的属性出现,此时两次getBean获得Bean1后,再调用Bean1的getBean2方法返回的结果是是Bean2的同一个实例。
    此时我们可以让Bean1实现回调接口BeanFactoryAware,实现setBeanFactory方法,将传入的BeanFactory保存为属性,即this.beanFactory = beanFactory。
    然后在Bean1的getBean2方法里通过调用传递过来的BeanFactory的getBean方法获得Bean2,并将其返回,如此就实现了使两个Bean生命周期分离的问题了。
四、初始化(可选)
  1、BeanPostProcessors接口(重要),后处理Bean,用来扩展Bean的功能。在初始化之前加工一次,之后再加工一次。调用postProcessBeforeInitialization方法。
  2、InitializingBean接口
  3、调用Bean配置文件里的init-method指定的初始化方法(提倡)
  4、BeanPostProcessors接口的postProcessAfterInitialization方法。
五、就绪
六、销毁

  1、DisposableBean接口,在容器关闭时,如果Bean类有实现DisposableBean接口,则执行他的destroy()方法。
  2、调用Bean配置文件里的destroy-method指定的方法(提倡)
七、单例在容器启动时实例,原型在getBean调用时实例化。

你可能感兴趣的:(spring,bean,配置管理,prototype)