Sping AOP概述

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/weixin_44778952/article/details/89463608

实现机制

Spring实现AOP是动态代理的方式。在Spring运行的时候,会针对目标Bean动态的产生一个代理的Bean,而调用者真正来使用的时候并不是直接访问目标Bean,而是使用的代理Bean
在这里插入图片描述

注意点

  • 代理Bean使用ProxyFactory产生
    这是使用编程或者Xml配置时,重点要使用的一个类,它是实现SpringAOP的关键的类。从名字也可以看出来它是一个代理工厂类。
  • 内部根据情况使用不同的代理实现
  • 代理Bean注入到调用者中供使用
    这是Spring的一贯风格

两种代理实现

代理在Java里面至少有两种,一种是JDK的代理,一种是开源包实现的代理
在这里插入图片描述
看上图,JDK的代理要求被代理的目标实现接口,CGLIB的代理不需要目标Bean实现任何的接口。因此,如果目标Bean实现了接口,上面两种方式都是可行的;如果目标Bean并没有实现任何接口,那只能考虑使用CGLIB。
如果从性能上考虑的话,JDK一般比CGLIB性能高一些。

连接点的类型

连接点用于表明通知用在哪个地方,Spring里面目前只支持一种连接点类型——方法调用。也就是说我们写的通知只有在方法调用这样的场景上可以用上,其他场景应用不上。
不过,在一些特定的场景下,连接点并不是方法调用的话,也可以集成功能更加强大的AspectJ,它提供了更多类型的连接点的支持。

通知类型

在这里插入图片描述
看上图,列出了通知的各种类型,在调用方法之前有Before,调用方法之后有After,方法运行前后都可以使用的AroundAfter分为两种:After ReturningAfter Throwing

实现方式

以下是Spring支持的AOP实现方式:

  • 使用ProxyFactory
    使用纯Java代码来使用编程式的写法,最核心的一个类是ProxyFactory
  • 配置ProxyFactoryBean
    使用Xml来配置一个ProxyFactoryBean
  • 使用AOP的命名空间
    目前用的比较流行
  • 使用AspectJ的注解

猜你喜欢

转载自blog.csdn.net/weixin_44778952/article/details/89463608
今日推荐