首页 > 其他分享 >AOP切面、动态代理

AOP切面、动态代理

时间:2024-07-04 21:57:05浏览次数:8  
标签:定义 Spring 代理 切面 AOP 动态

目录

一、用切面做的是怎么声明切面的?(切面是怎么用的?)

二、切点是怎么定义的?

三、说一下面向切面编程?

四、AOP是怎么实现的?

五、说一下动态代理?


一、用切面做的是怎么声明切面的?切面是怎么用的?

  1. 定义切面类:使用@Aspect注解来表示类是一个切面,可以使用@Component注解或其他Spring的组件注解来让Spring容器管理这个类的实例。
  2. 定义切入点(Pointcut) 使用@Pointcut注解来定义一个切入点表达式,这个表达式描述了哪些方法将被拦截。
  3. 定义通知(Advice):通知是切面中的具体逻辑,它定义了当切入点匹配的方法被调用时,应该执行哪些操作。Spring AOP支持多种类型的通知,如前置通知(Before advice)、后置通知(After advice)、环绕通知(Around advice
  4. 配置Spring AOP:Spring配置文件或启动类启用AspectJ自动代理,pring Boot中,这通常是通过添加@EnableAspectJAutoProxy注解

二、切点是怎么定义的?

  1. execution:表示这是一个execution类型的切点表达式。
  2. 方法修饰符(可选):如public、private等,默认为任意修饰符。
  3. 返回类型模式:如void、int、java.util.List等,表示方法的返回类型。
  4. 声明类型模式(可选):如com.example.MyClass,表示方法所属的类。
  5. 方法名称模式:如myMethod、*Method等,表示方法名称。
  6. 参数模式:如(java.lang.String,int)、(..)表示任意参数等,表示方法的参数类型。
  7. 抛出异常模式(可选):如java.lang.Exception,表示方法抛出的异常类型。

三、说一下面向切面编程?

        是一种编程范式(简称AOP),通过横切关注点的方式来解耦系统中的各个模块。

        切面(Aspect):是横切关注点的实现,它是一个包含了横切关注点代码的模块

        连接点(Joinpoint):是在程序执行过程中能够插入切面代码的点

        切点(Pointcut):用于定义哪些连接点将被切面织入

        通知(Advice):是切面的具体实现,它定义了切面在何时以何种方式织入到目标连接点上

        织入(Weaving):是将切面代码与目标代码合并的过程

四、AOP是怎么实现的?

        AOP的实现方式主要分为静态AOP和动态AOP两种:

        静态AOP:在编译阶段对程序的需要增强的代码进行修改,从而生成静态的AOP代理类。这种方式的实现需要特殊的编译器支持,如AspectJ。

        动态AOP:在运行时动态地为目标对象生成代理对象,并在代理对象中织入切面代码。这种方式的实现通常依赖于Java的动态代理机制或CGLIB等第三方库,如Spring AOP。

五、说一下动态代理?

        是aop的实现方式, 分为jdk动态代理cglib

j        dk必须实现接口,基于java反射,只代理接口,不代理类

        cglib通过继承方式子类重写父类方法增强,cglib使用字节码创建代理对象,可以代理接口,也可以代理类

标签:定义,Spring,代理,切面,AOP,动态
From: https://blog.csdn.net/w12345ll/article/details/140190801

相关文章

  • SwitchyOmega代理chrome
    1、chrome导入SwitchyOmega证书.crx1)、证书下载https://github.com/FelisCatus/SwitchyOmega/releases SwitchyOmega_Chromium.crx重命名为然后解压为  2)、 导入chrome浏览   3)、SwitchyOmega插件配代理 代理服务器填写完了,要点击一下'应用选项' ......
  • 解释下什么是事件代理?应用场景?
    一、是什么事件代理,俗地来讲,就是把一个元素响应事件(click、keydown......)的函数委托到另一个元素前面讲到,事件流的都会经过三个阶段:捕获阶段->目标阶段->冒泡阶段,而事件委托就是在冒泡阶段完成事件委托,会把一个或者一组元素的事件委托到它的父层或者更外层元素上,真......
  • 禅道二次开发——禅道zentaoPHP框架扩展机制——对控制层扩展
    对现有模块的control层的扩展有两种,一种是覆盖现有的方法,一种是增加新的方法。下面我们来看下如何进行扩展。......
  • 穿梭在Yarn的代理配置迷宫:全面指南
    ......
  • MyBatis2(MyBatis基础配置 动态代理 映射器 select 元素 insert 元素 update 元素和del
    目录一、MyBatis基础配置1.MyBatis配置文件2.<configuration>元素3.<enviroments>元素4.<properties>元素5.<typeAliases>元素6.<mappers>元素二、动态代理三、映射器1.映射器与接口2. 映射器的引入 3.映射器的组成 四、select元素参数传递多......
  • AOP的基本使用
    @Target({ElementType.METHOD})@Retention(RetentionPolicy.RUNTIME)@Documentedpublic@interfaceRequestLog{}@Slf4j@Aspect@ComponentpublicclassRequestLogAspect{@Around(“@within(org.springframework.stereotype.Controller)||@within(org.springframe......
  • aop
    @Aspect@ComponentpublicclassLogAspect{/***定义切入点,切入点为spring.aop.ProductController类下的所有方法/@Pointcut("execution(public*spring.aop.ProductController.(..))")publicvoidlog(){}/***前置通知:在连接点方法执行之前执行/@Before("log()......
  • Nginx proxy manager反向代理docker hub
    1.域名解析用作反向代理的域名要提前解析,如果使用外国的DNS域名提供商的话,最好提前一天解析好。2.配置NPM2.1.Details选项卡2.2.SSL选项卡2.3.Advanced选项卡location/{#Dockerhub的官方镜像仓库proxy_passhttps://regis......
  • 如何通过指纹浏览器使用代理IP?
    1.指纹浏览器定义指纹浏览器是&nbsp;一种浏览器技术,它根据用户设备的硬件、软件和配置等特征生成唯一标识符(称为“指纹”)。此指纹用于识别和追踪用户身份,即使用户更改其IP地址或清除浏览器数据(如缓存和Cookie)也是如此。指纹浏览器会&nbsp;收集用户设备的信息,包括操作系统......
  • 代理IP的10大误区:区分事实与虚构
    在当今的数字时代,代理已成为在线环境不可或缺的一部分。它们的用途广泛,从增强在线隐私到绕过地理限制。然而,尽管代理无处不在,但仍存在许多围绕代理的误解。在本博客中,我们将探讨和消除一些最常见的代理误解,阐明其真实性质和用法。1.代理保证绝对匿名关于代理的最普遍误解之......