
Aop的作用:
第一种: 有接口情况,使用 JDK 动态代理
用Proxy类中的这个静态构造方法
创建指定接口的代理类的实例(这里的代理类其实就是实现这个接口的类)
下面是所有代码:
所以method可以直接调用invoke()方法去执行已被UserDaoImpl实现类继承后并增强了(方法体中添加了一些功能)的UserDao接口中的add()方法
第二种:没有接口情况,使用 CGLIB 动态代理
其实类似于子类继承并重写父类方法的过程,具体参考java基础中子类继承父类方法并重写的代码
创建一个spring文件并对其做出以下配置
在User类和UserProxy类中均使用注解 @Component 创建对象默认对象的名字为类的首字母小写
在增强类中添加注解 @Aspect 生成代理对象
然后在Spring配置文件中开启生成代理对象
有5中类型的通知:
分别是:
重点: 相同切入点抽取
所有通知的value值都可以写切入点中的方法名称(pointdemo方法),就可以对切入点路径中的add()方法进行"增强"
和之前的注解一样均写在类的上方
创建配置类,不用xml配置文件
注意:本文大量引用了尚硅谷Spring5课程讲义中的笔记。