1-3 Spring AOP的一些核心概念

Spring AOP 的一些核心概念

概念 含义
Aspect 切面
Join Point 连接点,Spring AOP里总是代表一次方法执行
Advice

                             通知,在连接点执行的动作

Pointcut

                           切入点,说明如何匹配连接点

Introduction 引入,为现有类型生命额外的方法和属性
Target Object 目标对象
AOP proxy AOP代理对象,可以使JDK动态代理,也可以是CGLIB代理
Weaving 织入,连接切面与目标对象或类型创建代理的过程

 

 

 

 

 

 

 

 

 

常用注解

@EnableAspectJAutoProxy

@Aspect //加在类上 声明该类是一个切面

@Pointcut // execution(public * *(..))、execution(* set*(..))、execution(* com.xyz.service.*.*(..))、

@Before

@After / @AfterReturning / @AfterThrowing

@Around

@Order

 

package com.example.ribi.aspect;

import lombok.extern.slf4j.Slf4j;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
import org.springframework.stereotype.Component;

@Aspect
@Slf4j
@Component
public class PerformanceAspect {

    @Around("rpsoitoryOps()")
    public Object logPerformance(ProceedingJoinPoint pjp) throws Throwable {
        log.info(pjp.getSignature().toShortString());
        log.info("===================================");
        return pjp.proceed();
    }

    @Pointcut("execution(* com.example.ribi.*.*(..))")
    private void rpsoitoryOps(){

    }
}

-- 部分摘自 极客时间 玩转Spring全家桶 

 

可以使用JoinPoint做一些其他的检验

JoinPoint的方法
    Object getThis();

    / **
     * 

返回目标对象。这将永远是      *与 target 切入点匹配的对象相同的对象      *指定人。除非你特别需要这种反射访问,      *你应该使用 target 切入点指示符      *获取此对象以获得更好的静态类型和性能。      *      *

当没有目标对象时返回null。      * /     Object getTarget();     / **      *

返回此连接点的参数。      * /     Object [] getArgs();     / **返回连接点处的签名。      *      * getStaticPart()。getSignature()返回相同的对象      * /     签名getSignature();     / **

返回与连接点对应的源位置。      *      *

如果没有可用的源位置,则返回null。      *      *

返回默认构造函数的定义类的SourceLocation。      *      *

getStaticPart()。getSourceLocation()返回相同的对象。      * /     SourceLocation getSourceLocation();     / **返回表示连接点类型的String。这个      *保证字符串      *实习。 getStaticPart()。getKind()返回      *同一个对象。      * /     String getKind(); ... ...

 

你可能感兴趣的:(Springboot学习)