Spring实战第四章学习笔记————面向切面的Spring
什么是面向切面的编程
我们把影响应用多处的功能描述为横切关注点。比如安全就是一个横切关注点,应用中许多方法都会涉及安全规则。而切面可以帮我们模块化横切关注点。而当我们要重用通用功能时,最常见的面向编程技术是继承或委托。但当整个应用都用相同的基类继承会导致整个对象体系脆弱,而委托会使调用变复杂。切面则提供了取代继承和委托的另一种方案。在使用面向切面编程时,我们仍然在一个地方定义通用功能,但是可以通过声明的方式定义这个功能要以何种方式在何处应用而无需修改的类。横切关注点被模块化为特殊的类,这些类被称为切面。这样做是的每个关注点都集中于一个地方。其次服务模块更简洁。
定义AOP术语
描述切面的常用术语有通知(advice)、切点(pointcut)和连接点(join point)。
aaarticlea/jpeg;base64,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*DpjHsbMyQSPBYRsOX/PPn+9dxEQEREBERB//9k=" alt="image">
通知
在AOP术语中,切面的工作被称为通知。通知定义了切面是什么以及何时使用。通知除了描述切面要完成的工作还解决了何时执行这个工作的问题。Spring切面可以应用五种类型的通知:
- 前置通知(Before):在目标方法被调用之前调用通知功能;
- 后置通知(After):在目标方法完成之后调用通知,此时不关心方法的输出是什么;
- 返回通知(After-returning):在目标方法成功执行之后调用通知;
- 异常通知(After-throwing):在目标方法抛出异常之后调用通知;
- 环绕通知(Around):通知包裹了被通知的方法,在被通知的方法调用之前和调用之后执行自动以的行为。
连接点(Join point)
连接点是指在应用执行过程中能够插入切面的一个点。这个点可以是调用方法时、抛出异常时、甚至修改一个字段时。切面代码可以利用这些点插入到应用的正常流程之中,并添加新的行为。
切点(Poincut)
如果说通知定义了切面的“什么”和“何时”,那么切点定义了“何处”,切点的定义会匹配通知所要织入的一个或多个连接点。
切面(Aspect)
切面是通知和切点的结合。
引入(Introducation)
引入允许我们向现有的类添加新的方法或属性。
织入(Weaving)
织入是把切面应用到目标对象并创建新的代理对象的过程。切面在指定的连接点被织入到目标对象中。织入一般发生在如下几个时机:
- 编译时:当一个类文件被编译时进行织入,这需要特殊的编译器才可以做的到,例如AspectJ的织入编译器;
- 类加载时:使用特殊的ClassLoader在目标类被加载到程序之前增强类的字节代码;
- 运行时:切面在运行的某个时刻被织入,SpringAOP就是以这种方式织入切面的,原理应该是使用了JDK的动态代理技术。
Spring对AOP的支持
并不是所有的AOP框架都是相同的,它们在连接点模型上可能有强弱之分。织入切面的方式和时机也有所不同。但是创建切点来定义切面所织入的连接点是AOP框架的基本功能。
Spring提供了四种类型的AOP支持:
- 基于代理的经典Spring AOP;
- 纯POJO切面;
- @AspectJ注解驱动的切面。
- 注入式Aspect切面(适合Spring各版本)
前三种是Spring AOP实现的变体,Spring AOP构建在动态代理基础之上,因此,Spring对AOP的支持局限于方法拦截。
第二种:借助Spring的aop命名空间,我们可以将纯POJO转换为切面。实际上,这些POJO只是提供了满足切点条件时所要调用的方法。这种技术需要XML配置,但这的确是声明式地将对象转换为切面的简便方式。
第三种Spring借鉴了AspectJ的切面,以提供注解驱动的AOP。本质上,它依然是Spring基于代理的AOP,但是编程模型几乎与编写成熟的AspectJ注解切面完全一致。
第四种类型能够帮助你将值注入到AspectJ驱动的切面中。
Spring通知是Java编写的,Spring是在运行时通知对象,且只支持方法级别的连接点。
通过切点来选择连接点
在Spring AOP中,要使用AspectJ的切点表达式语言来定义切点。Spring是基于代理的,而某些切点表达式是与基于代理的AOP无关的。
AspectJ指示器 | 描述 |
---|---|
arg() | 限制连接点匹配参数为指定类型的执行方法 |
@args() | 限制连接点匹配参数由指定注解标注的执行方法 |
execution() | 用于匹配是连接点的执行方法 |
this() | 限制连接点匹配AOP代理的Bean引用为指定类型的类 |
target() | 限制连接点匹配目标对象为执行类型的类 |
@target() | 限制连接点匹配特定的执行对象,这些对象对应的类要具备指定类型的注解 |
within() | 限制连接点匹配指定的类型 |
@within() | 限制连接点匹配指定注解所标注的类型 |
@annotation() | 限制匹配带有指定注解连接点 |
编写切点
aaarticlea/png;base64,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" alt="image">
这里使用了execution()指示器来选择Performance的play()方法。表达式以*开头表示不关心返回值的类型,然后指定了全限定类名和方法名,使用..作为方法的参数列表,表示可以是任意的入参。
使用&&将execution()和within()进行连接,那么也就可以使用||(或)和!(非)。
aaarticlea/png;base64,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" alt="image">
在切点中选择bean
除了之前所列的指示器外,Spring还引入了一个新的bean()指示器,它允许我们在切点表达式中使用bean的ID来标识bean。
execution(* concert.Performance.perform())
and bean('woodstock')
使用注解创建切面
定义切面
import org.aspectj.lang.annotation.AfterReturning;
import org.aspectj.lang.annotation.AfterThrowing;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
@Aspect
public class Audience {
@Before("execution(* *concert.Performance.perform(..))")
public void silenceCellPhones(){
System.out.println("Silencing cell phones");
}
@Before("execution(* *concert.Performance.perform(..))")
public void takeSeats(){
System.out.println("Taking seats");
}
@AfterReturning("execution(* *concert.Performance.perform(..))")
public void applause(){
System.out.println("CLAP CLAP CLAP!!!");
}
@AfterThrowing("execution(* *concert.Performance.perform(..))")
public void demandRefund(){
System.out.println("Demaning a refund");
}
}
Audience类使用了@AspectJ注解进行了标注。该注解表明Audience不仅仅是一个POJO,还是一个切面。Audience类中的方法都使用注解来定义切面的具体行为。Audience有四个方法都使用了通知注解来表明它们应该在何时调用。
注解 | 通知 |
---|---|
@After | 通知方法会在目标方法返回或抛出异常后调用 |
@AfterReturning | 通知方法会在目标方法返回后调用 |
@AfterThrowing | 通知方法会在目标方法抛出异常后调用 |
@Around | 通知方法会将目标方法封装起来 |
@Before | 通知方法会在目标方法调用之前执行 |
此时注意到这些注解都给定了一个切点表达式作为它的值,它会在Performance的perform()方法执行时触发。
但相同的切点表达式重复了四遍,有没有什么方法可以避免这种重复呢?如果我们只定义这个切点一次然后在需要的时候再引用它,这时就可以使用@Pointcut注解来定义一个切面内可重用的切点。
import org.aspectj.lang.annotation.AfterReturning;
import org.aspectj.lang.annotation.AfterThrowing;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;
@Aspect
public class Audience {
@Pointcut("execution(* *concert.Performance.perform(..))")
public void performance(){}
@Before("performance()")
public void silenceCellPhones(){
System.out.println("Silencing cell phones");
}
@Before("performance()")
public void takeSeats(){
System.out.println("Taking seats");
}
@AfterReturning("performance()")
public void applause(){
System.out.println("CLAP CLAP CLAP!!!");
}
@AfterThrowing("performance()")
public void demandRefund(){
System.out.println("Demaning a refund");
}
}
performance()方法的实际内容并不重要,该方法只是一个标识,供@Ponitcut注解依附。
需要注意的是除了注解和performance()方法,Audience类仍是一个POJO。只不过它通过注解表明会作为切面使用。但此时Audience只是Spring容器一个bean使用的这些注解不会解析,也不会创建将其转换为切面的代理。因此可使用JavaConfig,在配置类的类级别上通过使用EnableAspectJ-AutoProxy注解启用自动代理功能:
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.EnableAspectJAutoProxy;
@Configuration
@EnableAspectJAutoProxy //启用AspecJ代理
@ComponentScan
public class ConcertConfig {
@Bean
public Audience audience(){ //声明Audience bean
return new Audience();
}
}
当然也可以用XML来装配bean使用aop:aspectj-autoproxy元素。
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
<context:component-scan base-package="com.wang.four" />
<aop:aspectj-autoproxy />
<bean class="com.wang.four.Audience"/>
</beans>
Spring的AspectJ自动代理仅仅使用@AspectJ作为创建切面的指导,切面依然是基于代理的。在本质上,它依然是Spring基于代理的切面。这一点非常重要,因为这意味着尽管使用的是@AspectJ注解,但我们仍然限于代理方法的调用。
创建环绕通知
环绕通知是最为强大的通知类型。它能够让你所编写的逻辑将被通知的目标方法完全包装起来。实际上就像在一个通知方法中同时编写前置通知和后置通知。
使用环绕通知重新实现Audience切面:
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Pointcut;
@Aspect
public class Audience {
@Pointcut("execution(* concert.Performance.perform(..))")
public void performance(){}
@Around("performance()")
public void watchPerformance(ProceedingJoinPoint joinPoint){
try{
System.out.println("Silencing cell phones");
System.out.println("Taking seats");
joinPoint.proceed();
System.out.println("CLAP CLAP CLAP!!!");
}catch(Throwable e){
System.out.println("Demaning a refund");
}
}
}
关于这个新的通知方法,值得注意的是它接受ProceedingJoinPoint作为参数。这个对象的作用是通过它调用被通知的方法。当然你也可以不调用proceed()方法从而阻塞对被通知方法的访问。
处理通知的参数
当切面需要参数时,切点声明了提供给通知方法的参数。
aaarticlea/png;base64,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" alt="image">
切点表达式中的args(trackNumber)限定符。它表明传递给playTrack()方法的int类型参数也会传递到通知中去。参数的名称trackNumber也与切点方法签名中的参数相匹配。
这个参数会传递到通知方法中,这个通知方法是通过@Before注解和命名切点trackPlayed(trackNumber)定义的。切点定义中的参数与切点方法中的参数名称是一样的,这样就完成了从命名切点到通知方法的参数转移。
@Aspect
public class TrackCounter {
private Map<Integer,Integer> trackCounts = new HashMap<Integer,Integer>();
@Pointcut("execution(* com.wang.second.CompactDisc.playTrack(int))" +
"&& args(trackNumber)")
public void trackPlayer(int trackNumber){}
@Before("trackPlayer()")
public void countTrack(int trackNumber){
int currentCount = getPlayCount(trackNumber);
trackCounts.put(trackNumber, currentCount);
}
public int getPlayCount(int trackNumber){
return trackCounts.containsKey(trackNumber)?trackCounts.get(trackNumber):0;
}
}
通过注解引入新功能
之前所介绍的切面都是包装被通知对象的已有方法。而切面还可以为被通知的对象引入全新的功能。
如果除了实现这些接口,代理也能暴露新接口的话,会怎么样呢?那样的话,切面所通知的bean看起来像是实现了新的接口,即便底层实现类并没有实现这些接口也无所谓。
aaarticlea/png;base64,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BQVx5coVOnbsSLly5XjooYcyPZc+L1fy51WdClmPHDnClClTmDhxYp7L5ipuTrVTGQcOHGDx4sU888wzDvfK5ues3mmhkcrar2xdkePJWq8Is1gsDnPeIi153luvPcsasTw3nmlDE0nbF/nJAwxxbd26dVitVh577LFbllV+rtM76cPmzJlDvXr16NKly2211/wOg6ANgs6xPGRN7dKlS5w4cYLFixdz4cIFLl68SIcOHShTpgxdunRxWBZzqzxuV26BS5cusXz5cuLi4ti5cyexsbE0b94cgN69exMcHEzx4sXx8fFx+zqVP3v06MEHH3yAt7d3nsrmKm5uEPT7779P06ZNqV27diZzsH53MMh64CUTpbguzxXLGrmchjxQEuQqO5KJOPJOY4DTOLKWLtJxZjqXf1++fJlZs2bx/vvvO8xz326Z5nWdZidMbx0YPHgwK1aswMfH574iaLczcWdV2PqGkp17cjLMVf6ucC9kcxWWk3nInVdISAghISE0bdpUa0hbtmxh3759PPvssxw7dozatWvj4+ODj48PDz30UCYTlY+PD15eXprZLzU1lZSUFC29tLQ04uPjOX36NP/8849m+tu3bx9Wq5XmzZtTtGhRmjZtynPPPYenp6eD7LcqC3eqU7mz6ty5M6tWraJbt26Z7r3XsrmKe7fvovzMaWlpXL58mWrVqjmQpOjM5WVQkHlnMP2nMDeDfWMUsXRn9erV1K9fn6CgII0szp07R3BwsObhrSiKQz5g3+EqISGB8PBwrFYru3btokSJEoSGhpKWluZwOpZMxCId+XjLrLYWLV68OElJSVy+fFk769rd6jS7+csDroMHD9KkSRN8fHyyda87we0I2kD+R1Zm8GbNmjnMjaalpfHPP/8QFxdHSkoKe/bs4ejRo8TExGC1WilYsCD+/v74+PiQkpLCjRs3uHHjBiaTiSJFilC9enWCg4MJDg6mXbt2FCtWjBo1amgdq564xLX7FeJZu3fvzpgxYzSCfhBw8+ZNjVRlIlaUjHlfcU1VM86G158Bb7PZSElJIS4uTrs2duxYpk2bRpkyZfjpp5+oUKECRYoUwWw2c/PmTSIjI0lNTWXEiBEUL15ce/9FHgC7d+9m8+bNTJo0CUVRmDx5MkOGDKFkyZIOJnghs2wR0RO4eAZhGrdardr3GjVq8O+//1K8ePH79l3X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" alt="image">
需要注意的是当引入接口的方法被调用时,代理会把此调用委托给实现了接口的某个对象。实际上一个bean的实现。首先我们先引入一个Encoreable接口。
public interface Encoreable {
void performEncore();
}
我们需要一种方式将这个接口应用到Performance实现中。借助于AOP的引入功能,我们创建一个新的切面:
@Aspect
public class EncoreableIntroducer {
@DeclareParents(value="com.wbw.Performance+",defaultImpl=DefaultEmcoreable.class)
public static Encoreable encoreable;
}
在这个切面中,我们使用了@DeclareParents注解,将Encoreable接口引入到Performance中。
@DeclareParents注解由三部分组成:
- value属性指定了哪种类型的bean要引入该接口。在本例中,也就是所有实现Performance的类型。(标记符后面的加号表示是Performance的所有子类型,而不是Performance本身。)
- defaultImpl属性指定了为引入功能提供实现的类。在这里,我们指定的是DefaultEncoreable提供实现。
- @DeclareParents注解所标注的静态属性指明了要引入了接口。在这里,我们所引入的是Encoreable接口。和其他切面一样,我们需要将它声明为一个bean。Spring的自动代理机制会获取到它的声明,当Spring发现一个bean使用了@Aspect注解时,Spring就会创建一个代理,然后将调用委托给被代理的bean或被引入的实现,这取决于调用的方法属于被代理的bean还是属于被引入的接口。
在XML中声明切面
AOP配置元素 | 用途 |
---|---|
<aop:advisor> | 定义AOP通知器 |
<aop:after> | 定义AOP后置通知(不管被通知的方法是否执行成功) |
<aop:after-returning> | 定义AOP返回通知 |
<aop:after-throwing> | 定义AOP异常通知 |
<aop:around> | 定义AOP环绕通知 |
<aop:aspect> | 定义一个切面 |
<aop:aspectj-autoproxy> | 启用@AspectJ注解驱动的切面 |
<aop:before> | 定义一个AOP前置通知 |
<aop:config> | 顶层的AOP配置元素。大多数的<aop:*>;元素必须包含在<aop:config>元素内 |
<aop:declare-parents> | 以透明的方式为被通知的对象引入额外的接口 |
<aop:pointcut> | 定义一个切点 |
注入AspectJ切面
虽然Spring AOP能够满足许多应用的切面需求,但是与AspectJ相比,Spring AOP 是一个功能比较弱的AOP解决方案。AspectJ提供了Spring AOP所不能支持的许多类型的切点。
例如,当我们需要在创建对象时应用通知,构造器切点就非常方便。不像某些其他面向对象语言中的构造器,Java构造器不同于其他的正常方法。这使得Spring基于代理的AOP无法把通知应用于对象的创建过程。
对于大部分功能来讲,AspectJ切面与Spring是相互独立的。虽然它们可以织入到任意的Java应用中,这也包括了Spring应用,但是在应用AspectJ切面时几乎不会涉及到Spring。但是精心设计且有意义的切面很可能依赖其他类来完成它们的工作。如果在执行通知时,切面依赖于一个或多个类,我们可以在切面内部实例化这些协作的对象。但更好的方式是,我们可以借助Spring的依赖注入把bean装配进AspectJ切面中。