首页 > 编程语言 >Spring AOP、AspectJ、CGLIB

Spring AOP、AspectJ、CGLIB

时间:2023-03-27 14:48:02浏览次数:45  
标签:Spring 代理 编译 CGLIB AOP 动态 AspectJ

 

静态代理和动态代理

AOP 代理则可分为静态代理和动态代理两大类,其中静态代理是指使用 AOP 框架提供的命令进行编译,从而在编译阶段就可生成 AOP 代理类,因此也称为编译时增强;而动态代理则在运行时借助于 JDK 动态代理、CGLIB 等在内存中“临时”生成 AOP 动态代理类,因此也被称为运行时增强。 一般来说,编译时增强的 AOP 框架在性能上更有优势,因为运行时动态增强的 AOP 框架需要每次运行时都进行动态增强。

 

AspectJ

AspectJ是一套独立的面向切面编程的解决方案,AspectJ 在编译时“自动”编译得到了一个新类,这个新类增强了原有的类的功能,因此 AspectJ 是编译时增强的 AOP 框架。

 

AspectJ与SpringAoP

曾经以为AspectJ是Spring AOP一部分,是因为Spring AOP使用了AspectJ的Annotation。使用了Aspect来定义切面,使用Pointcut来定义切入点,使用Advice来定义增强处理。虽然使用了Aspect的Annotation,但是并没有使用它的编译器和织入器。

 

CGLIB

CGLIB(Code Generation Library)它是一个代码生成类库。它可以在运行时候动态时生成某个类的子类。 CGLIB包的底层是通过使用一个小而快的字节码处理框架ASM(Java字节码操控框架),来转换字节码并生成新的类。 代理模式为要访问的目标对象提供了一种途径,当访问对象时,它引入了一个间接的层。

 

 

 

https://blog.csdn.net/chinaherolts2008/article/details/120098676

标签:Spring,代理,编译,CGLIB,AOP,动态,AspectJ
From: https://www.cnblogs.com/loquat6/p/17261472.html

相关文章

  • springboot 整合各种框架
    springboot整合各种框架整合web框架controller导入依赖<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</art......
  • spring-web中的annotation注解之十:@ModelAttribute
    spring-web中的annotation注解之十:@ModelAttribute1、@ModelAttribute注解在方法上:*该方法在Controller每个方法执行前会被调用,没有返回值的@ModelAttribute方法使用mo......
  • 非常小的一个东西,Spring依赖注入Bean类型的8种情况
    大家好,我是三友~~今天来讲一个可能看似没有用但是实际又有点用的一个小东西,那就是@Autowired支持注入哪些Bean的类型。为啥要讲这个呢?故事说起来可能就比较长了。不过......
  • 某大厂面试题:说一说Java、Spring、Dubbo三者SPI机制的原理和区别
    大家好,我是三友~~今天来跟大家聊一聊Java、Spring、Dubbo三者SPI机制的原理和区别。其实我之前写过一篇类似的文章,但是这篇文章主要是剖析dubbo的SPI机制的源码,中间只是......
  • Spring源码核心剖析
    作者:京东科技韩国凯前言SpringAOP作为Spring最核心的能力之一,其重要性不言而喻。然后需要知道的是AOP并不只是Spring特有的功能,而是一种思想,一种通用的功能。而SpringAOP只......
  • SpringBoot 集成微信支付的各种支付产品
    SpringBoot是一款非常流行的Java开发框架,而微信支付则是众多移动支付产品中的佼佼者,整合两者可以让我们更方便地开发各种支付产品。在本篇博客中,我将介绍如何在Spring......
  • Spring源码核心剖析
    作者:京东科技韩国凯前言SpringAOP作为Spring最核心的能力之一,其重要性不言而喻。然后需要知道的是AOP并不只是Spring特有的功能,而是一种思想,一种通用的功能。而SpringAO......
  • SpringBoot Windows 自启动 - 通过 Windows Service 服务实现
    SpringBoot在Windows运行时,有个黑窗体,容易被不小心选中或关闭,或者服务器重启后,不能自动运行,注册为WindowsService服务可实现SpringBoot项目在Windows中随系统自启动......
  • SpringBoot(六)
    5.2任务这里说的任务系统指的是定时任务。定时任务是企业级开发中必不可少的组成部分,如长周期业务数据的计算,如年度报表,如系统脏数据的处理,再比如系统性能监控报告,还有抢......
  • Spring的@Transactional如何实现的
    @Transactional注解简介@Transactional是spring中声明式事务管理的注解配置方式。@Transactional注解可以帮助我们把事务开启、提交或者回滚的操作,通过aop的方式进行管理......