SpringBoot后置处理器,扫描动态线程池,注册动态线程池

发布于:2025-07-10 ⋅ 阅读:(18) ⋅ 点赞:(0)

SpringBoot后置处理器,扫描动态线程池,注册动态线程池

一.自定义注解 DynamicThreadPool

用来说明这个bean是动态线程池

二.Spring扩展点前置知识

1、Spring Bean 生命周期扩展点

接口 / 注解 作用 常见使用场景
BeanPostProcessor Bean 初始化前后做处理(代理/增强/注册) AOP、自动代理、线程池注册、自定义注解处理
InstantiationAwareBeanPostProcessor Bean 实例化前后处理字段注入等(高级版本) 属性值提前干预、自动装配逻辑定制
SmartInstantiationAwareBeanPostProcessor 提供构造函数预测、早期代理创建 Spring AOP 与 Cglib 动态代理核心
DestructionAwareBeanPostProcessor Bean 销毁前做处理 清理资源、记录销毁日志
@PostConstruct / InitializingBean 初始化完成回调 初始化逻辑执行,如连接池初始化
@PreDestroy / DisposableBean Bean 销毁前回调 清理资源,如线程池关闭、MQ连接断开

2、Spring 容器感知接口(Aware 系列)

让 Bean 获得 Spring 容器内部资源的引用(如 ApplicationContext、BeanName 等)

接口名 注入内容 典型用途
ApplicationContextAware 注入 ApplicationContext 获取其他 Bean、获取注解、事件发布等
BeanNameAware 注入 Bean 名称 日志标记、注册唯一ID等
EnvironmentAware 注入 Spring 环境配置 动态获取配置项(如环境变量)
ResourceLoaderAware 注入资源加载器 加载 classpath、文件资源等
ServletContextAware 注入 Web 容器上下文(仅 Web) 获取 ServletContext、路径

三.后置处理器,注册

1.ApplicationContextAware 注入 ApplicationContext

ApplicationContext 赋值到一个静态变量上,这样就能在非Spring环境中拿到Spring的bean

2.OneThreadBeanPostProcessor

后置处理器,扫描bean,如果是动态线程池,则注册到OneThreadRegistry 中(内部维护的一个threaId-ThreadPoolExecutorHolder的静态map)


网站公告

今日签到

点亮在社区的每一天
去签到