- 根据配置情况调用Bean的构造函数或工厂方法,完成Bean的实例化
- 通过依赖注入完成Bean所有属性值的注入
- 如果Bean实现了BeanNameAware接口,则调用Bean的
setBeanName()
方法并传入当前Bean的id - 如果Bean实现了BeanFactoryAware接口,则调用Bean的
setBeanFactory()
方法并传入当前工厂类的引用 - 如果Bean实现了ApplicationContextAware接口,则调用Bean的
setApplicationContext()
方法并传入当前ApplicationContext的引用 - 如果BeanPostProcessor与Bean关联,则Spring将调用该接口的预初始化方法
postProcessBeforeInitialization()
方法对Bean进行加工操作,此处非常重要,Spring的AOP就是利用这个实现的 - 如果Bean实现了InitializingBean接口,则Spring将调用
afterPropertiesSet()
方法 - 如果在配置文件中通过
init-method
属性指定了初始化方法,则调用该初始化方法 - 如果BeanPostProcessor与Bean关联,则Spring将调用该接口的初始化方法
postProcessAfterInitialization()
方法,此时,Bean已经可以被系统使用了 - 如果在配置中指定了该Bean的作用范围为singleton,则将该Bean放入Spring IoC的缓存池中,将触发Spring对该Bean的生命周期管理;如果作用范围为prototype,则将该Bean交给调用者,由调用者管理该Bean的生命周期,Spring则不再管理该Bean
- 如果Bean实现了Disposable接口,则Spring会调用destroy()方法将Spring中的Bean销毁;如果在配置文件中通过属性destroy-method配置了Bean的销毁方法,则Spring将调用该方法对Bean进行销毁
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。