Spring AOP操作的相关术语及环境准备

 更新时间:2022年05月30日 11:18:40   作者:把苹果咬哭的测试笔记  
这篇文章主要为大家介绍了Spring AOP操作的相关术语及环境准备学习,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

一、常用术语

在后续使用 AOP 中会用到几个专业术语:连接点、切入点、通知(增强)、切面。

分别是什么意思?

来看这里有个 User 类,里面有增删改查 4 个方法。

public class User {
    public void add() {}
    public void delete() {}
    public void update() {}
    public void select() {}
}

以此辅助说明一下上述 4 个术语:

连接点:类中可以被增强的方法,就叫做连接点。比如上面的 4 个方法都可以被增强,都可以称为连接点。 

切入点:实际被真正增强的方法,称为切入点。比如上面的 4 个方法,只增强了 add() 方法,这个就是切入点。 

通知(增强):实际上增强的逻辑部分,称为通知。比如我给方法增加了日志的输出处理,那这部分逻辑就称为通知或者增强。 

切面:把通知(增强)应用到切入点的过程,就叫切面,指的是一个动作。 

其中,关于通知(增强),有 5 种类型:

  • 前置通知:被增强的方法之前执行。
  • 后置通知:被增强的方法之后执行。
  • 环绕通知:被增强的方法前后都执行。
  • 异常通知:被增强的方法出现异常时执行。
  • 最终通知:不管被增强的方法有没有异常都会执行。

二、准备工作

Spring 框架一般基于 AspectJ 实现 AOP 操作。

AspectJ 是一个独立的框架,不是 Spring 的组成部分。为了便捷,把二者结合起来使用。

那么基于 AspectJ 实现 AOP,可以有 2 种方式:

  • 基于 xml 配置文件
  • 基于注解方式。

一般为了便捷,使用注解方式。

1. 引入依赖

需要 jar 包如下:

2. 切入点表达式

作用是:知道要对哪个类里面的哪个方法进行增强。

结构:

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

比如,我有个类 User 在 package com.pingguo.spring5.dao;里。

(1)示例1

我要增强这个类下面的 add() 方法,表达式这么写:

execution(* com.pingguo.spring5.User.add(..))

  • *号:代表所有类型的修饰符。
  • 返回类型:可以不写
  • 类全路径:com.pingguo.spring5
  • 方法:前面加 .add()
  • 参数:括号里的 .. 表示方法中的参数

(2)示例2

我要增强这个类下面的所有方法,表达式这么写:

execution(* com.pingguo.spring5.User.*(..))

这里就是把方法用 * 号替换掉。

(3)示例3我要增强包com.pingguo.spring5下的所有类的所有方法:

execution(* com.pingguo.spring5.*.*(..))

仍然是用*替换对应的地方。

以上就是Spring AOP操作的相关术语及环境准备的详细内容,更多关于Spring AOP操作术语环境的资料请关注脚本之家其它相关文章!

相关文章

  • Java实现百度AOI数据的解析与转换

    Java实现百度AOI数据的解析与转换

    Java作为一种成熟且广泛应用的编程语言,具有跨平台、面向对象、安全性高等特点,非常适合用于开发各种类型的应用程序,本文为大家整理了基于Java的AOI数据解析与转换的实现方法,需要的可以参考下
    2025-02-02
  • SpringBoot集成Jasypt敏感信息加密的操作方法

    SpringBoot集成Jasypt敏感信息加密的操作方法

    这篇文章主要介绍了SpringBoot集成Jasypt加密敏感信息,包括敏感信息加密的作用,项目集成Jasypt方式详解,本文给大家介绍的非常详细,需要的朋友可以参考下
    2022-05-05
  • Java设计模式之抽象工厂模式(Abstract Factory)

    Java设计模式之抽象工厂模式(Abstract Factory)

    这篇文章主要为大家详细介绍了Java设计模式之抽象工厂模式,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-03-03
  • mybatisPlus批量插入优化加快性能

    mybatisPlus批量插入优化加快性能

    这篇文章主要介绍了mybatisPlus批量插入优化加快性能,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-12-12
  • @OneToMany查询陷入循环引用的解决方案

    @OneToMany查询陷入循环引用的解决方案

    这篇文章主要介绍了@OneToMany查询陷入循环引用的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-10-10
  • java自己手动控制kafka的offset操作

    java自己手动控制kafka的offset操作

    这篇文章主要介绍了java自己手动控制kafka的offset操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-02-02
  • hdfs集成springboot使用方法

    hdfs集成springboot使用方法

    这篇文章主要介绍了hdfs集成springboot使用,配置Configuration信息分为两种方式,每种方式给大家介绍的非常详细,需要的朋友可以参考下
    2024-03-03
  • Java之 TreeSet的详细使用说明

    Java之 TreeSet的详细使用说明

    这篇文章主要介绍了Java之 TreeSet的详细使用说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-02-02
  • springboot实现邮箱发送(激活码)功能的示例代码

    springboot实现邮箱发送(激活码)功能的示例代码

    这篇文章主要为大家详细介绍了如何利用springboot实现邮箱发送(激活码)功能,文中的示例代码简洁易懂,有需要的小伙伴可以跟随小编一起学习一下
    2023-10-10
  • SpringBoot使用Maven插件进行项目打包的方法

    SpringBoot使用Maven插件进行项目打包的方法

    这篇文章主要介绍了SpringBoot使用Maven插件进行项目打包的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11

最新评论