Spring5 框架 笔记(二)AOP 详解 手把手教学

本文详细介绍了Spring5框架中的AOP概念,包括AOP的基本原理、动态代理机制、AOP术语解释,以及如何进行AOP操作,如切入点表达式、AspectJ注解的使用,并探讨了多个增强类对同一方法的增强优先级设定。
摘要由CSDN通过智能技术生成

三、AOP

1. AOP 概念及原理

1.1 什么是 AOP

(1) AOP(Aspect-Oriented Programming: 面向切面编程) ,利用 AOP 可以对业务逻辑各个部分进行隔离。从而使得业务逻辑各部分耦合度降低,提高程序的可重用性,同时提高了开发的效率。

(2) 通俗描述:不通过修改源代码的方式,在主干功能里添加新功能。

(3) 举例:

​ 假设现在项目经理有一个需求:在项目所有类的方法前后打印日志。

​ 通过静态代理,我们可以实现此功能:

截屏2021-02-26 14.13.23

​ 但是如果手动添加,程序员要为每一个目标类编写,如果当前的系统有成百上千个类,工作量就太大了。而利用动态代理,只需要少量的代码,且更加灵活和统一,有利于程序的扩展。

JDK 动态代理

截屏2021-02-26 14.24.141.2 底层原理

有两种情况动态代理

(1) 有接口情况,使用 JDK 动态代理

创建接口实现类代理对象,增强类的方法

(2) 没有接口情况,使用 CGLIB 动态代理

创建子类的代理对象,增强类的方法

1.3 AOP 术语

1、连接点

类里面哪些方法可以被增强,这些方法称为连接点

2、切入点

实际被增强的方法,成为切入点

3、通知(增强)

(1)实际被增强的逻辑部分称为通知(增强)

(2)通知有多种类型

前置通知

后置通知

环绕通知

异常通知

最终通知

4、切面

是动作,把通知应用到切入点的过程

2. AOP 操作

2.1 准备工作

1、Spring 框架一般都是基于 AspectJ 实现 AOP 操作

​ AspectJ 不是 Spring 组成部分,独立于 AOP 框架,一般把 AspectJ 和 Spring 框架一起使用,进行 AOP 操作

2、在项目工程里面引入 AOP 相关依赖

截屏2021-02-26 14.41.18

3、切入点表达式

(1)切入点表达式作用: 知道对哪个类里面的哪个方法可以进行增强

(2)语法结构: execution([权限修饰符][返回类型][类全路径][方法名称][参数列表])

例1: 对 com.spring5.demo.dao.UserDao 类里面的 add 方法进行增强

execution(* com.spring5.demo.dao.UserDao.add(..))

例2: 对 com.spring5.demo.dao.UserDao 类里面所有方法进行增强

execution(* com.spring5.demo.dao.UserDao.* (..))

例3: 对 com.spring5.demo 包里面所有类,类里面所有方法进行增强

execution(* com.srping5.demo.dao.*.* (..))

2.2 AspectJ 注解

1、创建类,在类里面定义方法

public class User {
   
    public void add() {
   
        System
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值