绝大多数主流中间件、框架,底层都是靠反射做能力扩展、插件化、自定义适配
完全没错绝大多数主流中间件、框架底层都是靠反射做能力扩展、插件化、自定义适配框架本身只写通用骨架把扩展口子留给反射让业务 / 第三方自己填逻辑。一、核心逻辑框架定死主干流程不写死具体业务类、实现类预留扩展接口 反射入口运行时读取配置 / 注解反射加载自定义类、创建实例、执行逻辑不用改框架源码就能无限扩展功能一句话反射 框架留给开发者的动态扩展通道二、各大中间件 / 框架真实用法1. Spring 全家桶IOC反射读取 Bean 定义动态创建对象、注入依赖AOP反射拦截目标类方法扩展切面日志、事务、权限自定义注解全靠反射解析注解实现自定义业务扩展2. MyBatisMapper 接口没有实现类动态代理 反射生成代理对象反射读取实体属性、映射数据库字段自定义 TypeHandler、插件 Plugin全部反射加载扩展3. RPC 中间件Dubbo / GRPC / OpenFeign消费端无接口实现类反射动态生成调用代理扩展过滤器、负载均衡、序列化器反射加载自定义扩展实现不用改 RPC 内核新增策略直接配置类名反射载入4. 消息队列RocketMQ / Kafka自定义消息监听器、消息处理器框架通过反射实例化你的消费类执行消费逻辑消息序列化、重试策略、过滤规则都支持反射扩展5. 定时任务Quartz / XXL-Job配置类名 方法名运行时反射调用业务任务新增任务不用改框架直接写业务类配置即可运行6. 配置中心、网关、监控组件网关自定义过滤器、路由规则监控埋点、链路追踪都是反射植入扩展逻辑三、为什么框架非要用反射做扩展开闭原则框架封闭稳定扩展功能开放不改源码就能新增能力解耦最强框架和业务代码无硬依赖只靠类名、注解关联插件化热插拔想加功能就写类不想用直接删掉框架无感统一通用调度框架写一套反射调度逻辑能调度所有自定义扩展类四、结合你之前说的反射修改类结构 反射创建新对象正是框架实现动态扩展最核心的两种手段改属性 / 改方法 → 动态修改已有组件行为动态 new 对象 → 加载全新扩展实现类是的几乎所有中间件与框架都内置反射能力。框架只封装通用核心流程通过反射实现动态加载自定义实现类、创建实例、调用自定义逻辑以此实现插件化扩展无需修改框架源码就能拓展业务功能这也是框架具备高扩展性的底层核心原理。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2623902.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!