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

Spring AOP 的一些核心概念

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

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

Pointcut

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

Introduction引入,为现有类型生命额外的方法和属性
Target Object目标对象
AOP proxyAOP代理对象,可以使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();

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

     * /
    Object getTarget();

    / **
     * <p>返回此连接点的参数。</ p>
     * /
    Object [] getArgs();

    / **返回连接点处的签名。
     *
     * <code> getStaticPart()。getSignature()</ code>返回相同的对象
     * /
    签名getSignature();

    / ** <p>返回与连接点对应的源位置。</ p>
     *
     * <p>如果没有可用的源位置,则返回null。</ p>
     *
     * <p>返回默认构造函数的定义类的SourceLocation。</ p>
     *
     * <p> <code> getStaticPart()。getSourceLocation()</ code>返回相同的对象。 </ p>
     * /
    SourceLocation getSourceLocation();

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值