当前位置: 首页 > news >正文

IOC和AOP

IOC:

控制反转,将对象的创建以及依赖关系的管理交给容器进行管理,按需求自动创建对象。

spring通过依赖注入(DI)来实现IOC

AOP:

核心概念:

  • 切面(Aspect):一般是类,用来定义Pointcut(切入点)和Advice(通知)
  • 连接点(JoinPoint):程序执行的某一个点,例如某个方法
  • 切入点(pointcut):用来指定需要将Advice(通知)使用到哪些地方,也可视为连接点的集合
  • 通知(Advice):需要增强的功能
  • 织入(weave):把切面应用到目标对象并创建代理对象的过程
  • 目标对象(target):需要被代理增强的类

实现原理:

  • 通过JDK动态代理实现,代理模式是指给某一个对象提供一个代理,由代理对象控制对原对象的引用。代理对象提供与真实对象相同的接口,并拦截所有方法调用,判断是否需要进行增强

动态代理:

JDK动态代理:

基于接口实现,代理类和目标类需要实现同一个接口,并重写InvokationHandler类的invoke方法来实现增强逻辑。最后通过Proxy类传入目标接口和反射处理器,调用newInstance方法生成代理对象,拦截方法调用进行增强

Cglib动态代理:

基于继承实现,需要实现MethodInvokeHandler接口,重写对应的invoke方法来实现增强逻辑,

然后使用Enhancer类指定目标类为父类并指定对应的MethodInvokeHandler处理器,调用create方法生成代理对象,拦截方法调用进行增强

http://www.xdnf.cn/news/970813.html

相关文章:

  • vue实现气泡词云图
  • FastJson的反序列化问题入门
  • Qt使用ODBC连接MySQL数据库
  • R7-1 显示Pascal三角形
  • 【代码模板】从huggingface加载tokenizer和模型,进行推理
  • idea64.exe.vmoptions配置
  • IDEA中配置HTML和Thymeleaf热部署的步骤
  • 蓝桥杯 2024 15届国赛 A组 儿童节快乐
  • 指针与引用参数传递的区别及内存操作流程详解
  • 分散电站,集中掌控,安科瑞光伏云平台助力企业绿色转型
  • 高通录像功能
  • Vim 光标移动命令总览
  • Java中高并发线程池的相关面试题详解
  • 《ZLMediaKit 全流程实战:从部署到 API 调用与前后端集成》
  • 用 LoRA 对 Qwen2.5-VL 模型进行SFT - FORCE_TORCHRUN=1
  • 条件运算符
  • error: src refspec master does not match any - Git
  • coze的基本使用
  • 从零开始搭建现代化 Monorepo 开发模板:TypeScript + Rollup + Jest + 持续集成完整指南
  • Git操作问题及解决方案-记录5
  • (十)学生端搭建
  • 【SQL学习笔记3】深入理解窗口函数的用法
  • 鹰盾加密器系统黑屏问题的深度解析与处理机制
  • RAG系统向量数据库选型与Prompt Engineering鲁棒性测试实践
  • 10:00开始面试,10:06就出来了,问的问题有点变态。。。
  • 第14篇:数据库中间件的分布式配置与动态路由规则热加载机制
  • vxe-table 如何实现直接渲染输入框控件,不需要点击编辑方式,直接就显示文本框
  • DSL查询文档
  • Android OpenSL ES 音频播放完整实现指南
  • AtCoder Beginner Contest 408