跳至主要內容Spring Bean生命周期执行过程
- 实例化一个Bean。
- 按照Spring上下文对实例化的Bean进行配置。
- 如果这个Bean实现了BeanNameAware接口,则会调用实现它的setBeanName(String)方法,该方法传递的参数是Spring配置文件中Bean的id值。
- 如果这个Bean实现了BeanFactoryAware接口,则会调用它实现的setBeanFactory(BeanFactory)方法,该方法传递的参数是Spring工厂自身。
- 如果这个 Bean实现了ApplicationContextAware接口,则会调用setApplication Context(ApplicationContext)方法,该方法传入的参数是Spring上下文。
- 如果该Bean关联了BeanPostProcessor接口,则会调用postProcessBefore Initialization(Object obj,String s)方法,该方法在Bean初始化前调用,常用于定义初始化Bean的前置工作,比如系统缓存的初始化。
- 如果Bean在Spring配置文件中配置了init-method属性,则会自动调用其配置的初始化方法。
- 如果某个Bean关联了BeanPostProcessor接口,将会调用postProcessAfter Initialization(Object obj,String s)方法。至此,Bean的初始化工作就完成了,应用程序就可以开始使用Bean实例了。
- 当Bean不再被需要时,会在清理阶段被清理掉。如果Bean实现了DisposableBean接口,则Spring会在退出前调用实现类的destroy()方法。
- 如果某个Bean的Spring配置文件中配置了destroy-method属性,在Bean 被销毁前会自动调用其配置的销毁方法。