SpringBean实例化之前做点事情
发表于|更新于|后端
|浏览量:
SpringBean 实例化
需求,实现一个视频解码器,可以实现各种视频格式的解码
第一种方法:先去实现各个解码器,然后 if.else 判断使用哪种解码器




使用 BeanPostProcessor 优化
第二种方法:使用 BeanPostProcessor 构造解码器索引,再从索引中拿到匹配的





测试运行:

BeanFactoryPostProcessor
- BeanFactoryPostProcessor 是在 Spring 容器加载 Bean 定义XML 文件之后, Bean 实例化之前执行
- BeanFactoryPostProcessor 的执行顺序在 BeanPostProcessor 之前
- BeanFactoryPostProcessor 与 BeanPostProcessor 都是服务于 Bean 的生命周期中的,只是使用场景和作用略有不同
第三方类是单例的,但是想变为原型的,怎么操作?


文章作者: 褚成志
相关推荐
2026-04-09
Spring应用上下文的获取和保存Bean
Spring 容器是 IOC 容器,但是,反过来却不成立 不常用的容器实现 – BeanFactory:最简单的容器,提供基本的 DI 功能 高级实现,继承 BeanFactory 派生的应用上下文 – ApplicationContext:解析配置文件,创建、装配、管理、销毁 Bean 获取 ApplicationContext 的四种方式ApplicationContextInitializar:容器创建完成之后的回调定义在 org.springframework.context 包下 ApplicationListener:观察者模式的典型应用(常用) Spring Boot 启动程序的返回run 方法返回的就是应用上下文 ApplicationContextAware : Spring 的 Aware 接口(常用)Aware 可以理解为“察觉、注意到的、感知的”,在 Spring 中,XxxAware 也就是对 Xxx 感知的意思 编写工具类:保存上下文,获取Bean
2026-04-09
Spring
指定 DAO接口放置的包 com.baizhiedu.dao 123456789+ 编码 ```markdown# 实战经常根据需求 写的代码1. 实体2. 表3. 创建DAO接口4. 实现Mapper文件 5. Spring与Mybatis整合编码 搭建开发环境(jar) 1234567891011121314151617181920212223242526272829<dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>5.1.14.RELEASE</version></dependency><dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis...
2026-04-10
Spring AI 框架中如何集成 MCP?
SpringAI MCP介绍Spring AI MCP 为模型上下文协议提供 Java 和Spring 框架集成、它使 SpringAI 应用程序能够通过标准化的接口与不同的数据源和工是进行交互,支持同步和异步通信模式。整体架构如下: Spring Al 通过以下 Spring Boot 启动器提供 MCP 集成: 客户端启动器 spring-ai-starter-mcp-client 核心启动器提供 STDIO 和基于 HTTP 的 SSE 支持。 spring-ai-starter-mcp-client-webflux 基于WebFlux的SSE流式传输实现 服务端启动器 spring-ai-starter-mcp-server 核心服务器具有 STDIO 传输支持 spring-ai-starter-mcp-server-webmvc 基于Spring MVC的SSE流式传输实现 spring-ai-starter-mcp-server-webflux 基于WebFlux的SSE流式传输实现 基于stdio标准流MCP 服务端基于 stdio 的实现是最...
2026-04-09
ApacheMapStruct常用总结
Apache MapStruct 常用总结 只是简单使用还是比较简单的,但是有一些细节还是要注意的,不然会不知不觉出错 MapStruct 是一个用于生成类型安全的 bean Mapper类。也就是不同类型对象之间的转换器,一般的assembler以及convertor,不用手动写实现避免错误。 https://mapstruct.org/documentation/stable/reference/html/#Preface 要做的就是定义一个映射器接口,该接口声明任何所需的映射方法。在编译期间,MapStruct 将生成此接口的实现。这个实现使用普通的Java 方法调用来映射源对象和目标对象 @Mapping方法:https://mapstruct.org/documentation/stable/api/org/mapstruct/Mapping.html 依赖12345678910111213141516171819202122232425262728293031323334...<properties> <org.mapstruct.vers...
2026-04-09
SpringDataElasticsearch聚合实现过滤搜索
过滤功能分析整个过滤部分有3块: 顶部的导航,已经选择的过滤条件展示: 商品分类面包屑 其它已选择过滤参数 过滤条件展示,又包含3部分 商品分类展示 品牌展示 其它规格参数 展开或收起的过滤条件的按钮 顶部导航要展示的内容跟用户选择的过滤条件有关。这部分需要依赖第二部分:过滤条件的展示和选择。展开或收起的按钮是否显示,取决于过滤条件有多少,如果很少,那么就没必要展示。所以也是跟第二部分的过滤条件有关。 先做第二部分:过滤条件展示。 分类和品牌过滤条件 获取和展示数据库中已经有所有的分类和品牌信息。无论是分类信息,还是品牌信息,都应该从搜索的结果商品中进行聚合得到。 扩展返回的结果返回的结果PageResult对象,里面只有total、totalPage、items3个属性。现在要对商品分类和品牌进行聚合,添加分类和品牌的数据。 分类:页面显示了分类名称,但背后肯定要保存id信息。所以至少要有id和name 品牌:页面展示的有logo,有文字,当然肯定有id,基本上是品牌的完整数据 新建一个类,继承PageResult,然后扩展两个新的属性:分类集合和品牌集合: 123...
2026-04-09
SpringMVC
第四章、SpringMVC控制器开发详解 二4.1 核心要点 接受客户端(client)请求参数 [讲解完毕] 调用业务对象[讲解] 页面跳转 4.2 SpringMVC控制器调用业务对象【SSM整合】4.2.1 核心思路分析 4.2.2 编码 dispatcher.xml 1234567891011121314151617181920212223242526272829303132333435363738<context:component-scan base-package="com.baizhiedu"/><mvc:annotation-driven/><bean id="resolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <!--路径--> <property name="prefix" value="...
公告
👋 你好,我是褚成志,一名专注于云原生与后端架构的工程师。
热爱 Java、Kubernetes、Linux、Redis、Spring 等技术领域,持续探索 AGI 与智能化运维的边界。
这里记录我的技术思考与实践总结,欢迎交流!
热爱 Java、Kubernetes、Linux、Redis、Spring 等技术领域,持续探索 AGI 与智能化运维的边界。
这里记录我的技术思考与实践总结,欢迎交流!
