【spring(三)】AOP总结

🌈键盘敲烂,年薪30万🌈

目录

一、AOP相关概念

[① AOP核心思想思想:](#① AOP核心思想思想:)

[② AOP专业术语:](#② AOP专业术语:)

二、AOP快速如入门

三、AOP工作流程

四、切入点表达式

[① 语法格式](#① 语法格式)

②支持通配符

③书写技巧

五、通知类型

①⭐环绕通知⭐

六、获取切入点参数


一、AOP相关概念

① AOP核心思想思想:

  • 无侵入式的功能增强

② AOP专业术语:

  • 连接点:原始方法
  • 切入点表达式:匹配连接点的式子(要追加功能的方法)
  • 通知:追加的功能
  • 切面:绑定通知和切入点

二、AOP快速如入门

AOP入门案例(基于注解 )

分析:

1.导入依赖坐标

2.制作连接点(数据层的方法)

3.定义切入点表达式

4.绑定切入点与通知关系(切面)

定义通知类:

java 复制代码
@Component
@Aspect
public class MyAdvice {
    // 定义切入点表达式
    @Pointcut("execution(void itpan.dao.impl.BookDaoImpl.update())")
    public void pt(){}

    // 定义通知和绑定关系
    @Before("pt()")
    public void method(){
        System.out.println(System.currentTimeMillis());
    }

}

加入支持AOP的注解

java 复制代码
@Configuration
@ComponentScan("itpan")
@EnableAspectJAutoProxy // 告诉spring 程序有基于注解开发的AOP
public class SpringConfig {
}

三、AOP工作流程

四、切入点表达式

① 语法格式

  • 标准格式:动作关键字(访问修饰符 返回值 包名.类名或接口名.方法名(参数) 异常名)
  • 例如:execution(public User com.itpan.service.BookService.findById(int))

②支持通配符

.. 任意

* 任意一个

③书写技巧

  • 权限修饰符一般为public 可省略 private不要省略
  • 包名书写尽量不要使用.. 常用*或精准匹配
  • 接口名/类名等通用名称使用*匹配 例如UserService 使用*Service
  • 方法名动词精准匹配,名词*匹配 例如getById 使用getBy*

五、通知类型

①⭐环绕通知⭐

注意:

返回值类型为Object

补充:

前置通知 @Before

后置通知 @After

运行成功后通知 @AfterReturning

抛出异常后通知 @AfterThrowing

六、获取切入点参数

环绕通知:ProceedingJoinPoing中getArgs()

其他通知:JoinPoint中getArgs()方法

注意:ProceedingJoinPoing与JoinPoint必须式方法中的第一个参数

相关推荐
易安说AI4 小时前
Claude Opus 4.6 凌晨发布,我体验了一整晚,说说真实感受。
后端
易安说AI4 小时前
Ralph Loop 让Claude无止尽干活的牛马...
前端·后端
易安说AI4 小时前
用 Claude Code 远程分析生产日志,追踪 Claude Max 账户被封原因
后端
JH30735 小时前
SpringBoot 优雅处理金额格式化:拦截器+自定义注解方案
java·spring boot·spring
颜酱5 小时前
图结构完全解析:从基础概念到遍历实现
javascript·后端·算法
Coder_Boy_6 小时前
技术让开发更轻松的底层矛盾
java·大数据·数据库·人工智能·深度学习
invicinble6 小时前
对tomcat的提供的功能与底层拓扑结构与实现机制的理解
java·tomcat
较真的菜鸟6 小时前
使用ASM和agent监控属性变化
java
黎雁·泠崖6 小时前
【魔法森林冒险】5/14 Allen类(三):任务进度与状态管理
java·开发语言
qq_12498707538 小时前
基于SSM的动物保护系统的设计与实现(源码+论文+部署+安装)
java·数据库·spring boot·毕业设计·ssm·计算机毕业设计