SpringBean生命周期8步速记
实例化 → 属性填充 → 初始化 → 使用 → 销毁1. 实例化Instantiation加载配置扫描类通过构造方法创建 Bean 实例反射此时对象刚创建属性还都是默认值2. 属性填充Populate Properties执行依赖注入Autowired、Value、xml 注入等给成员变量赋值这一步之后Bean 的字段基本都有值了3. 执行 Aware 接口感知接口Spring 会检查 Bean 是否实现了各种Aware接口依次调用BeanNameAware→ setBeanName()BeanFactoryAware→ setBeanFactory()ApplicationContextAware→ setApplicationContext()作用让 Bean 能拿到 Spring 容器自身的信息。4. 执行 BeanPostProcessor 前置处理调用postProcessBeforeInitialization(Object bean, String beanName)很多增强功能在这里做如 PostConstruct 就是靠它执行的。5. 执行初始化方法Initialization按顺序执行 3 种初始化PostConstruct标注的方法InitializingBean接口的afterPropertiesSet()XML / Bean (initMethod) 指定的自定义初始化方法顺序注解 → 接口 → 自定义方法6. 执行 BeanPostProcessor 后置处理调用postProcessAfterInitialization(Object bean, String beanName)AOP 动态代理就是在这里生成代理对象的。7. Bean 就绪正常使用Bean 放入单例池业务代码可以注入使用。8. 销毁Destruction容器关闭close时执行PreDestroy标注的方法DisposableBean接口的destroy()XML / Bean (destroyMethod) 指定的销毁方法极简记忆版8 步背下来实例化构造属性填充DI执行 AwareBeanPostProcessor 前置初始化PostConstruct → afterPropertiesSet → initMethodBeanPostProcessor 后置AOP 代理正常使用销毁PreDestroy → destroy → destroyMethod高频面试考点PostConstruct 和 afterPropertiesSet 谁先执行→ PostConstruct 先执行。AOP 代理在什么时候生成→ BeanPostProcessor 的后置处理。多例 Beanprototype生命周期→ 初始化完整走一遍但销毁方法 Spring 不自动执行需要手动管理。BeanPostProcessor 对所有 Bean 生效吗→ 是的除了它自身。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2516785.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!