AOP 有哪些实现方式?

实现 AOP 的技术,主要分为两大类:

  • 静态代理 - 指使用 AOP 框架提供的命令进行编译,从而在编译阶段就可生成 AOP 代理类,因此也称为编译时增强;
    • 编译时编织(特殊编译器实现)
    • 类加载时编织(特殊的类加载器实现)。
  • 动态代理 - 在运行时在内存中“临时”生成 AOP 动态代理类,因此也被称为运行时增强。
    • JDK 动态代理:通过反射来接收被代理的类,并且要求被代理的类必须实现一个接口 。JDK 动态代理的核心是 InvocationHandler 接口和 Proxy 类 。
    • CGLIB动态代理: 如果目标类没有实现接口,那么 Spring AOP 会选择使用 CGLIB 来动态代理目标类 。CGLIB ( Code Generation Library ),是一个代码生成的类库,可以在运行时动态的生成某个类的子类,注意, CGLIB 是通过继承的方式做的动态代理,因此如果某个类被标记为 final ,那么它是无法使用 CGLIB 做动态代理的。

相关推荐

  1. AOP 哪些实现方式

    2024-01-04 14:44:06       65 阅读
  2. C#面:ASP.NET 的身份验证方式哪些

    2024-01-04 14:44:06       28 阅读
  3. 什么是适配器模式?它的实现方式哪些

    2024-01-04 14:44:06       55 阅读
  4. web哪些方式可以实时更新数据

    2024-01-04 14:44:06       44 阅读
  5. HTTP哪些请求方式

    2024-01-04 14:44:06       27 阅读
  6. 加密方式种类哪些

    2024-01-04 14:44:06       27 阅读
  7. 什么是模板方法模式?它的实现方式哪些

    2024-01-04 14:44:06       55 阅读
  8. SpringBoot 实现 PDF 添加水印哪些方案

    2024-01-04 14:44:06       38 阅读
  9. 什么是分布式事务?哪些实现方案?

    2024-01-04 14:44:06       19 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-04 14:44:06       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-04 14:44:06       106 阅读
  3. 在Django里面运行非项目文件

    2024-01-04 14:44:06       87 阅读
  4. Python语言-面向对象

    2024-01-04 14:44:06       96 阅读

热门阅读

  1. 线程池的运行原理和使用案例

    2024-01-04 14:44:06       67 阅读
  2. linux 流量监控

    2024-01-04 14:44:06       63 阅读
  3. linux系统正则表达式和grep过滤编辑器

    2024-01-04 14:44:06       64 阅读
  4. WPF 应用程序中实现单例模式

    2024-01-04 14:44:06       61 阅读
  5. 第二章 (补充)正则表达式

    2024-01-04 14:44:06       55 阅读
  6. qiankun微服务

    2024-01-04 14:44:06       67 阅读
  7. QML —— 使用Qt虚拟键盘示例(附完整源码)

    2024-01-04 14:44:06       69 阅读
  8. SQL注入学习笔记

    2024-01-04 14:44:06       49 阅读
  9. ElementUi中table组件使用row-class-name修改指定行

    2024-01-04 14:44:06       63 阅读
  10. Qt的三大机制(面试)

    2024-01-04 14:44:06       51 阅读