自定义注解切面

文章介绍了如何自定义一个注解`@CacheData`,该注解可以在类或方法上使用,具有运行时保留和可继承的特性。接着,创建了一个名为`CacheAspect`的切面组件,利用`@Around`注解配合注解驱动的方式,找到所有标记了`@CacheData`的方法并进行环绕通知。在环绕通知中,可以进行方法执行前后的处理,如缓存操作。
摘要由CSDN通过智能技术生成

1.自定义一个注解

@Target({ElementType.TYPE,ElementType.METHOD})  //注解能标在类上,也能标在方法上
@Retention(RetentionPolicy.RUNTIME)   // 运行时有效
@Documented
@Inherited  // 可继承,可以有子注解
public @interface CacheData {

}

2.自定义一个切面

@Component
@Aspect  //表示这是一个切面
public class CacheAspect {


    //@Around("execution(public *[*代表返回值类型] *[切入点所在包](..[参数个数]) )")   //连接点表达式

    // "@annotation(com.zzq.gmall.common.cache.CacheData)" 表明切入所有加入了此注解的
    @Around("@annotation(com.zzq.gmall.common.cache.CacheData)")
    public Object around(ProceedingJoinPoint joinPoint) throws Throwable {
          // 环绕通知返回值必须是Object,因为她可以拦截不同返回值的方法
          // joinPoint 有标注了此注解的方法的所有信息

        // 可以对目标方法做前置处理
        Object proceed = joinPoint.proceed(); // 放行目标方法
        // 可以对目标方法做后置处理

        return proceed;

    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值