参考文档

【Spring框架精讲5】一文搞懂Spring AOP全知识点(附实战代码详解) - 知乎 (zhihu.com)

Spring 详解(三):AOP 面向切面的编程_aop:after-returning作用-CSDN博客

spring之面向切面编程(AOP)_spring切面所在包命名-CSDN博客

基础依赖


<!-- spring 框架依赖
spring-context中包含了:spring-beans、spring-core、spring-aop、spring-expression -->
<dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
      <version>5.3.19</version>
</dependency>
<!-- AOP 依赖
spring-aspects包含了aspectjweaver依赖-->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-aspects</artifactId>
    <version>5.3.13</version>
</dependency>

示例使用

关于Spring AOP代理的问题记录

Spring AOP的动态代理可以代理接口也可以代理普通类。

但当普通类实现了接口时,这是采用普通类类型进行转换会出现ClassCastException异常,这是因为当目标类 UserDAOImpl 实现了某个接口(或者 Spring AOP 创建了一个接口的代理)时, Spring 会使用 JDK 动态代理。当你尝试将代理对象强制转换为 UserDAOImpl 类型时,会抛出 ClassCastException。因为此时的代理对象实际上是一个实现了接口的动态代理类,而不是 UserDAOImpl 的实例。