【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必须式方法中的第一个参数

相关推荐
一 乐41 分钟前
婚纱摄影网站|基于ssm + vue婚纱摄影网站系统(源码+数据库+文档)
前端·javascript·数据库·vue.js·spring boot·后端
Boilermaker19921 小时前
[Java 并发编程] Synchronized 锁升级
java·开发语言
Cherry的跨界思维1 小时前
28、AI测试环境搭建与全栈工具实战:从本地到云平台的完整指南
java·人工智能·vue3·ai测试·ai全栈·测试全栈·ai测试全栈
alonewolf_992 小时前
JDK17新特性全面解析:从语法革新到模块化革命
java·开发语言·jvm·jdk
一嘴一个橘子2 小时前
spring-aop 的 基础使用(啥是增强类、切点、切面)- 2
java
码事漫谈2 小时前
Protocol Buffers 编码原理深度解析
后端
sheji34162 小时前
【开题答辩全过程】以 中医药文化科普系统为例,包含答辩的问题和答案
java
码事漫谈2 小时前
gRPC源码剖析:高性能RPC的实现原理与工程实践
后端
恋爱绝缘体12 小时前
2020重学C++重构你的C++知识体系
java·开发语言·c++·算法·junit
xiaolyuh1232 小时前
Spring 框架 核心架构设计 深度详解
spring·设计模式·spring 设计模式