天天看点

spring中bean的生命周期

关于spring中bean的生命周期管理请参照下图所示:

spring中bean的生命周期

一个bean在spring中要经历如下生命过程:

(1)bean的建立

  容器寻找bean的定义信息并将其实例化;

(2)属性注入

  使用依赖注入,spring按照bean的定义信息配置bean的所有属性;

(3)beannameaware的setbeanname()

  如果bean实现了beannameaware接口,工厂调用bean的setbeanname传递bean的id;

(4)beanfactoryaware的setbeanfactory()

  如果bean实现了beanfactoryaware接口,工厂调用bean的setbeanfactory传递自身;

(5)beanpostprocessors的processbeforeinitialization()

  如果beanpostprocessors和bean关联,那么其postprocessbeforeinitialization()方法将被调用;

(6)initializingbean的afterpropertiesset()

  如果bean实现了initializingbean接口,那么其afterpropertiesset()方法将被调用;

(7)bean自己定义的init-method

  如果bean的定义信息中定义了init-method方法,那么会执行bean自己的初始化方法;

(8)beanpostprocessors的processaafterinitialization()

  如果有beanpostprocessors和bean关联,那么其processaafterinitialization()方法将被调用;

到此时,bean就可以被应用系统使用了,并被保存在beanfactory中直到它不再被使用。

有两种方式可以把bean从beanfactory中删除:

a. 如果bean实现了disposablebean接口,destory()方法被调用。

b. 如果bean定义了destroy-method方法,则调用该方法。