首页 > 其他分享 >核心子方法5: invokeBeanFactoryPostProcessors(beanFactory)方法详解

核心子方法5: invokeBeanFactoryPostProcessors(beanFactory)方法详解

时间:2024-03-01 14:58:43浏览次数:29  
标签:调用 beanFactory postProcessBeanFactory BeanFactoryPostProcessor 详解 接口 方法 invokeBe

先总结: 该方法通过指定顺序, 遍历调用各种实现了BeanDefinitionRegistryPostProcessor接口或BeanFactoryPostProcessor接口, 的beanFactory后处理器

注: BeanDefinitionRegistryPostProcessor接口继承了BeanFactoryPostProcessor接口

调用顺序: 

1.先调用已经提前放入ApplicationContext应用程序上下文beanFactoryPostProcessors属性中的实现了BeanDefinitionRegistryPostProcessor接口的postProcessBeanDefinitionRegistry方法

2.按照优先级调用实现了PriorityOrdered接口(有PriorityOrdered注解)的BeanDefinitionRegistryPostProcessor -> postProcessBeanDefinitionRegistry方法

3.按照优先级调用实现了Ordered接口(有Ordered注解)的BeanDefinitionRegistryPostProcessor -> postProcessBeanDefinitionRegistry方法

4.最后,调用所有剩下的BeanDefinitionRegistryPostProcessors -> postProcessBeanDefinitionRegistry方法

5.按照上面的顺序调用BeanDefinitionRegistryPostProcessors -> postProcessBeanFactory方法

6.调用已经提前放入ApplicationContext应用程序上下文中实现了BeanFactoryPostProcessor接口的postProcessBeanFactory方法

7.按照优先级调用实现了PriorityOrdered接口(有PriorityOrdered注解)的BeanFactoryPostProcessor-> postProcessBeanFactory方法

8.按照优先级调用实现了Ordered接口(有Ordered注解)的BeanFactoryPostProcessor-> postProcessBeanFactory方法

9.最后,调用所有剩下的BeanFactoryPostProcessor-> postProcessBeanFactory方法

调用总结: 

1.优先调用实现BeanDefinitionRegistryPostProcessor接口的,  后调用实现BeanFactoryPostProcessor接口的

2. 优先提前放入ApplicationContext应用程序上下文的, 后调用实现了PriorityOrdered接口的, 再调用实现了Ordered接口的, 最后调用其它的

标签:调用,beanFactory,postProcessBeanFactory,BeanFactoryPostProcessor,详解,接口,方法,invokeBe
From: https://www.cnblogs.com/superpiter/p/18047034

相关文章

  • Superset3 前后端搭建详解
    Superset3搭建目录Superset3搭建后端:方法1、在Windows本地搭建方法2:运维线上搭建前端:前端搭建Superset数据库其他Superset框架是一套包括前后端代码的框架,后端语言为Python,前端语言为React,superset启动后包括一个前端地址+端口,一个后端地址+端口的服务,后端这个服务是带......
  • 核心子方法4: postProcessBeanFactory(beanFactory)方法详解
    先总结: 子类覆盖方法做额外的处理,此处我们自己一般不做任何扩展工作,但是可以查看web中的代码,是有具体实现的AnnotationConfigWebApplicationContext->AbstractRefreshableWebApplicationContext的实现:1.设置ServletContextAwareProcessor后处理器, 并设置忽略......
  • FullGC详解
    前言:背景:一、什么是JVM的GC?JVM(JavaVirtualMachine)。JVM是Java程序的虚拟机,是一种实现Java语言的解释器。 它提供了一种独立于操作系统的运行环境,使得Java程序在任何支持JVM的计算机上都可以运行。JVM负责加载、验证、解释、执行和垃圾回收Java字节代码,并为......
  • 详解海量日志传输框架 Flume
    什么是Flume本次我们来聊一聊Flume,它是Cloudera提供的一个高可用、高可靠、分布式的日志收集框架,用于海量日志的采集、聚合以及传输。Flume在生产上使用最多的场景就是,实时读取服务器本地磁盘的数据,然后将数据写入到HDFS。Flume基础架构再来看看Flume的基础架构:Ag......
  • Java HashMap 详解
    HashMapHashMap继承自AbstractMap,实现了Map接口,基于哈希表实现,元素以键值对的方式存储,允许键和值为null。因为key不允许重复,因此只能有一个键为null。HashMap不能保证放入元素的顺序,它是无序的,和放入的顺序并不相同。HashMap是线程不安全的。1.哈希表哈希表基于数......
  • 机器学习策略篇:详解满足和优化指标(Satisficing and optimizing metrics)
    满足和优化指标要把顾及到的所有事情组合成单实数评估指标有时并不容易,在那些情况里,发现有时候设立满足和优化指标是很重要的,让我告诉是什么意思吧。假设已经决定很看重猫分类器的分类准确度,这可以是\(F_1\)分数或者用其他衡量准确度的指标。但除了准确度之外,还需要考虑运行时......
  • Java访问权限之public、protected、private详解——【包和访问控制】【访问权限控制】
    @目录包和访问控制包声明和导入访问权限控制源码:Giteehttps://gitee.com/drip123456/java-seGIthubhttps://github.com/Drip123456/JavaSE专栏:JavaSE笔记专栏包和访问控制通过前面的学习,我们知道该如何创建和使用类。包声明和导入包其实就是用来区分类位置的东西,也可......
  • Rust的Cow类型有什么用?详解Cow及其用途
    Rust的智能指针有哪些?大多数人都能马上答出Box<T>、Rc<T>和Arc<T>、Ref<T>和在异步编程中很常见的Pin<P>等等。不过,有一个可能经常被大多数人遗忘的类型,它功能强大,利用好了可以节省很多复制开销;它就是这篇文章的主角:Cow<B>。什么是COW(Copy-On-Write)?在开始之前,有必要先介绍一下CO......
  • CentOS7 安装FastDFS配置详解
    一、介绍FastDFS是一个开源的高性能分布式文件系统。它的主要功能包括:文件存储,文件同步和文件访问(文件上传和文件下载),它可以解决高容量和负载平衡问题。FastDFS应该满足基于照片共享站点和视频共享站点等文件的网站的要求。FastDFS具有两个角色:tracker和storage。tracker负责调......
  • Python面向对象,类属性,实例属性,类方法,实例方法,静态方法的区别及用法详解
    一.前言在Python的面向对象编程中,类属性和实例属性是两个不同的概念,它们在作用域和使用方式上有所区别。在Python中的面向对象编程中有三种方法:实例方法、类方法和静态方法,它们之间的差异主要体现在参数传递和调用方式上。二.面向对象-类属性和实例属性1.区别在Pyth......