spring aop 切入依赖的jar包内的方法_Spring框架源码阅读:Spring AOP

  • Post author:
  • Post category:其他


概述

Spring aop通过动态代理的方式实现,在使用spring-aop时,工程中会引入一个非spring的jar包aopalliance包,spring5中将aopalliance包中的class打进了spring-aop包中(为了减少依赖?),先看看aopalliance包中的内容:

53b545950bc7503018ff48ed805b9865.png

Aopalliance包非常简单,只包括aop相关的几个接口,可将其中的接口分为两类:

· 实体域:AOP所操作的核心实体

实体域是AOP中的核心概念,核心接口是Advice,其中MethodInterceptor和ConstructorInterceptor是Advice的子接口

· 会话域:AOP运行时的上下文相关数据

这类对象中最主要的接口是Joinpoint,Invocation以及MethodInvocation和ConstructorInvocation接口都是Joinpoint的子接口

Spring-AOP是aopalliance的实现,并对aopalliance做了加强,增加了另外的实体——PointCut,PointCut表示切入点,即在哪些类的哪些方法上使用Advice

Spring AOP的设计

Spring AOP提供了多种使用方式,常用的有注释和XML,但注解和XML是非常简单易用的上层API,我们先看一下Spring AOP的更底层的API PointcutAdvisor接口,写一个PointcutAdvisor的实现类:

a522676593012770cab3fe1b8b3f9c5d.png

这里省略了getter/setter。可以看到,需要实现三个方法,先实现getPointcut方法,它需要返回一个Pointcut接口的对象,我们这里返回单例对象即可,本例简单起见,不管是否是单例,能说明问题即可,Pointcut接口中有两个方法&#



版权声明:本文为weixin_39850331原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。