冬眠的笔记
首页文章分类书单项目关于
冬眠
X

© 2026 冬眠的笔记 · 用文字记录思考,用思考改变生活

首页>文章>Java
JavaSpring扩展点源码分析

Spring 扩展点全景

BeanFactoryPostProcessor、BeanPostProcessor、ApplicationListener 等 Spring 容器扩展点全梳理

冬眠
冬眠
专注于技术、阅读与思考
2025-11-19
发布日期
4 min read
阅读时长
浏览量
Spring 扩展点全景

Spring扩展点

Spring的扩展点主要从以下进行。

  • BeanPostProcessor:监听一个bean在初始化前或初始化后的处理
  • ApplicationListener:根据不同的事件在spring加载不同的阶段进行调用这些事件
  • InitializingBean
  • ApplicationContextAware
  • HandlerInterceptor
  • MethodInterceptor
  • @Aspect
  • @RestControlleAdvice的使用
  • ResponseBodyAdvice
  • WebMvcConfigurer

BeanPostProcessor

BeanPostProcessor 接口中定义了 postProcessBeforeInitialization 方法和postProcessAfterInitialization 方法,监听一个bean在初始化前或初始化后的处理逻辑。

应用场景

  • 监听bean加载的耗时
  • 自定义注解的处理

子类

  • ApplicationContextAwareProcess
  • AutowiredAnnotationBeanPostProcessor —— Autowired注解的实现类

InitializingBean

InitializingBean 主要功能是Bean初始化完成后执行特定的初始化操作,在实现类被ioc容器初始化完成时,会自动调用覆盖这个接口的afterPropertiesSet方法。

应用场景

  • 执行依赖注入后的初始化操作 —— 当Bean的属性值设置完成后,有时候需要执行一些与属性值相关的初始化操作,例如校验属性值的合法性、初始化缓存等。
  • 进行资源的初始化和准备 —— 创建链接、加载配置等等
  • 启动后的初始化操作 —— 启动定时任务、初始化缓存等等

ApplicationContextAware

实现ApplicationContextAware接口。通过实现这个接口,spring会自动注入applicationContext上线文对象进来,我们可以根据这个上下文对象获取spring中的一些bean。

应用场景

  • 获取Spring容器上下文对象

HandlerInterceptor

SpringMVC的拦截器,可以实现该接口自定义拦截器(或者直接实现AsyncHandlerInterceptor接口)。该接口中提供了3个方法:

  • preHandle —— 在方法被调用前执行
  • postHandle —— 在方法执行后调用
  • afterCompletion —— 在整个请求处理完毕后进行回调

备注:HandlerInterceptorAdapter已弃用

应用场景

  • 前置校验,如校验登录,校验请求地址,校验token,校验和设置cookie等 —— 大部分都是实现preHandle方法

MethodInterceptor

在Spring Aop框架中,MethodInterceptor接口被用来拦截指定的方法,对方法进行增强。

ApplicationListener

根据不同的事件在spring加载不同的阶段进行调用这些事件。

实现类

  • ContextClosedEvent —— 监听spring容器关闭之前要做的处理
  • ApplicationStartedEvent —— SpringBoot启动开始时执行的事件
  • ApplicationEnvironmentPreparedEvent —— SpringBoot 对应Enviroment已经准备完毕,但此时上下文context还没有创建
  • ApplicationPreparedEvent —— SpringBoot 上下文context创建完成,但此时spring中的bean是没有完全加载完成的
  • ApplicationFailedEvent —— SpringBoot 启动异常时执行事件
  • ServletWebServerInitializedEvent —— Web服务准备完成

@RestControlleAdvice

@RestControlle的增强版本,一般用于拦截处理返回给web的异常等。

ResponseBodyAdvice

允许在执行@ResponseBody或ResponseEntity控制器方法之后但在使用HttpMessageConverter编写正文之前自定义响应。

WebMvcConfigurer

自己定义一些Handler,Interceptor,ViewResolver,MessageConverter。

方法

  • addFormatters —— 添加类型转换器和格式化器
  • addCorsMappings —— 跨域支持
  • addResourceHandlers —— 添加静态资源
  • configureMessageConverters —— 配置消息转换器
  • addInterceptors —— 添加拦截器

执行顺序

  • ApplicationContextInitializer
  • BeanDefinitionRegistryPostProcessor
  • BeanFactoryPostProcessor
  • InstantiationAwareBeanPostProcessor
  • SmartInstantiationAwareBeanPostProcessor
  • BeanFactoryAware
  • ApplicationContextAwareProcessor
  • BeanNameAware
  • PostConstruct注解
  • InitializingBean
  • FactoryBean
  • SmartInitializingSingleton
  • CommandLineRunner
  • DisposableBean
  • ApplicationListener

文章标签

JavaSpring扩展点源码分析
SpringBoot Actuator Endpoint
上一篇

SpringBoot Actuator Endpoint

2025-11-19

Spring AOP 实现机制
下一篇

Spring AOP 实现机制

2025-11-19

冬眠

冬眠

博主

专注于技术、阅读与思考。在这里记录学习、思考与生活。

116
文章
2
分类
关注我
系列:SpringBoot 扩展

第 2 篇,共 4 篇

上一篇

Spring AOP 实现机制

下一篇

SpringBoot Starter 自动装配

文章目录

目录

  • Spring扩展点
  • BeanPostProcessor
  • InitializingBean
  • ApplicationContextAware
  • HandlerInterceptor
  • MethodInterceptor
  • ApplicationListener
  • @RestControlleAdvice
  • ResponseBodyAdvice
  • WebMvcConfigurer
  • 执行顺序

相关文章

查看更多
PlatformTransactionManager 事务管理器

PlatformTransactionManager 事务管理器

2025-11-19 · 19 min read

Spring Bean 的加载过程

Spring Bean 的加载过程

2025-11-19 · 20 min read

Spring AOP 实现机制

Spring AOP 实现机制

2025-11-19 · 7 min read