SpringBoot项目中使用AOP的方法

1.概述

将通用的逻辑用AOP技术实现可以极大的简化程序的编写,例如验签、鉴权等。Spring的声明式事务也是通过AOP技术实现的。

 Spring的AOP技术主要有4个核心概念:

Pointcut: 切点,用于定义哪个方法会被拦截,例如 execution(* cn.springcamp.springaop.service.*.*(..))

Advice: 拦截到方法后要执行的动作

Aspect: 切面,把Pointcut和Advice组合在一起形成一个切面

Join Point: 在执行时Pointcut的一个实例

Weaver: 实现AOP的框架,例如 AspectJ 或 Spring AOP

2. 切点定义

常用的Pointcut定义有 execution 和 @annotation 两种。execution 定义对方法无侵入,用于实现比较通用的切面。@annotation 可以作为注解加到特定的方法上,例如Spring的Transaction注解。

execution切点定义应该放在一个公共的类中,集中管理切点定义。

示例:

1

2

3

4

public class CommonJoinPointConfig {

  @Pointcut("execution(* cn.springcamp.springaop.service.*.*(..))")

  public void serviceLayerExecution() {}

}

这样在具体的Aspect类中可以通过 CommonJoinPointConfig.serviceLayerExecution()来引用切点。

1

2

3

4

5

6

7

public class BeforeAspect {

你可能感兴趣的:(spring,spring)