参考文档:
【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
的实例。