AOP切面、动态代理

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

  1. 定义切面类:使用@Aspect注解表示一个切面可以使用@Component注解或其他Spring的组件注解来让Spring容器管理这个类的实例。
  2. 定义切入点(Pointcut) 使用@Pointcut注解来定义一个切入点表达式,这个表达式描述了哪些方法将被拦截
  3. 定义通知(Advice)通知是切面中的具体逻辑,它定义了当切入点匹配的方法被调用时,应该执行哪些操作。Spring AOP支持多种类型的通知,如前置通知(Before advice)、后置通知(After advice)、环绕通知(Around advice
  4. 配置Spring AOPSpring配置文件或启动类启用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使用字节码创建代理对象可以代理接口也可以代理

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值