Ioc容器refresh总结(3)--- Spring源码从入门到精通(三十三)

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: Ioc容器refresh总结(3)--- Spring源码从入门到精通(三十三)

上篇文章介绍了,调用bean工厂的后置处理器,主要分为两步:


他是在beanFactory预准备标准初始化之后执行invokBeanFactoryPostProcessor;先调用beanDefinitionRegistryPostProcessor,在调用beanFactoryPostProcessor,里面都有借口优先级。Ioc容器refresh总结(2)--- Spring源码从入门到精通(三十二)


六、registerBeanPostProcessor(beanFactory)


注册bean的后置处理器,beanPostProcessor作用:拦截bean的创建过程,在bean初始化前后调用。Intercept bean creator。

实现beanPostProcessor的接口有:

1、DestructionAwareBeanPostProcessor,其中postProcessorBeforeDestruction容器销毁前调用的后置处理,可以destory-method指定和@PreDestory。其中对应的@PostConstrut和init-method方法是在对象初始化之前调用(也就是对象创建构造器之后调用)。

2、InstantiationAwareBeanPostProcessor类,在对象初始化前后调用,分别调用postProcessorBeforeInitialization和postProcessorAfterInitialization,及其用后置处理器postProcessPropertyValues赋值完成之后,运用解析@Autowired和@Value。

3、SmartInstantiationAwareBeanPostProcessor类,用determineCandidateConstructors推断使用啥构造函数之前,和调用getEarlyBeanReference提早获取bean,解决循环依赖,提早创建代理类。

4、MergedBeanDefinitionPostProcessor类,在预处理@autowired@Value调用postProcessorMergeBeanDefinition。

不同后置处理器的bean创建的执行时机是不一样的。

从beanFactory获取所有BeanPostProcessor类型的;后置处理器都有优先级,通过这两个接口PriorityOrdered ,Ordered指定。

优先注册PriorityOrdered接口的beanPostProcessor。

image.png

把每一个BeanPostProcessor,用addBeanPostProcessor方法添加到beanFactory的BeanPostProcessor中。

  1. 再注册Ordered接口的beanPostProcessor。

image.png

  1. 第三步注册没有实现任何接口的beanPostProcessor。
  2. 最终注册mergedBeanDefinitionPostProcessor
  3. 注册一个applicationListenerDetector;bean创建完成之后,检测是否是 ApplicaitionListerner,是的话放在applicationContext容器中保存起来。

image.png

相关文章
|
1月前
|
Kubernetes Cloud Native Docker
云原生时代的容器化实践:Docker和Kubernetes入门
【10月更文挑战第37天】在数字化转型的浪潮中,云原生技术成为企业提升敏捷性和效率的关键。本篇文章将引导读者了解如何利用Docker进行容器化打包及部署,以及Kubernetes集群管理的基础操作,帮助初学者快速入门云原生的世界。通过实际案例分析,我们将深入探讨这些技术在现代IT架构中的应用与影响。
95 2
|
22天前
|
Kubernetes Cloud Native 开发者
云原生入门:从容器到微服务
本文将带你走进云原生的世界,从容器技术开始,逐步深入到微服务架构。我们将通过实际代码示例,展示如何利用云原生技术构建和部署应用。无论你是初学者还是有经验的开发者,这篇文章都将为你提供有价值的信息和启示。
|
1月前
|
Cloud Native 持续交付 Docker
Docker容器化技术:从入门到实践
Docker容器化技术:从入门到实践
|
1月前
|
Cloud Native 持续交付 云计算
云原生入门指南:从容器到微服务
【10月更文挑战第28天】在数字化转型的浪潮中,云原生技术成为推动现代软件开发的关键力量。本篇文章将带你了解云原生的基本概念,探索它如何通过容器化、微服务架构以及持续集成和持续部署(CI/CD)的实践来提升应用的可伸缩性、灵活性和可靠性。你将学习到如何利用这些技术构建和部署在云端高效运行的应用,并理解它们对DevOps文化的贡献。
56 2
|
25天前
|
Kubernetes Cloud Native 云计算
云原生入门:Kubernetes 和容器化基础
在这篇文章中,我们将一起揭开云原生技术的神秘面纱。通过简单易懂的语言,我们将探索如何利用Kubernetes和容器化技术简化应用的部署和管理。无论你是初学者还是有一定经验的开发者,本文都将为你提供一条清晰的道路,帮助你理解和运用这些强大的工具。让我们从基础开始,逐步深入了解,最终能够自信地使用这些技术来优化我们的工作流程。
|
1月前
|
运维 Kubernetes Cloud Native
云原生入门:Kubernetes和容器化的未来
【10月更文挑战第23天】本文将带你走进云原生的世界,探索Kubernetes如何成为现代软件部署的心脏。我们将一起揭开容器化技术的神秘面纱,了解它如何改变软件开发和运维的方式。通过实际的代码示例,你将看到理论与实践的结合,感受到云原生技术带来的革命性影响。无论你是初学者还是有经验的开发者,这篇文章都将为你开启一段新的旅程。让我们一起踏上这段探索之旅,解锁云原生技术的力量吧!
|
28天前
|
前端开发 Java Docker
使用Docker容器化部署Spring Boot应用程序
使用Docker容器化部署Spring Boot应用程序
|
29天前
|
Kubernetes Linux Docker
容器化技术Docker入门与实践
容器化技术Docker入门与实践
53 0
|
1月前
|
Java Docker 微服务
利用Docker容器化部署Spring Boot应用
利用Docker容器化部署Spring Boot应用
47 0
|
2月前
|
Ubuntu Shell 开发者
Docker入门:轻松开始容器化之旅
【10月更文挑战第17天】Docker 是一种开源的应用容器引擎,它让开发者能够“一次构建、到处运行”。Docker 通过容器化技术将应用程序及其依赖打包在一起,从而确保应用在任何环境中都能一致地运行。本文将为新手用户提供一个全面的Docker入门指南,包括基本概念、优势、安装配置以及如何创建和管理容器。
54 2
下一篇
DataWorks