当前位置: 首页 > news >正文

Spring Boot AOP @Pointcut拦截注解的表达式与运算符

项目场景:

这里主要说下Spring Boot AOP中@Pointcut拦截类上面的注解与方法上面的注解,怎么写表达式怎么,还有@Pointcut中使用运算符。


@PointCut 表达式

拦截注解的表达式有3种:@annotation、@within、@target


1、@annotation

匹配有指定注解的方法(注解作用在方法上面)

@annotation(com.test.aop.demo.MyAnnotation)

2、@within

匹配包含某个注解的类(注解作用在类上面)

@within(com.test.aop.demo.MyAnnotation)

3、@target

匹配目标对象有指定注解的类(注解作用在类上面)

@target(com.test.aop.demo.MyAnnotation)

@target 和@within的区别:
        1、@target(注解A):判断被调用的目标对象中是否声明了注解A,如果有,会被拦截;

        2、@within(注解A): 判断被调用的方法所属的类中是否声明了注解A,如果有,会被拦截;

        3、@target关注的是被调用的对象,@within关注的是调用的方法所在的类;


@PointCut中的运算符

 PointCut中可以使用&&、||、! 运算符

同时匹配方法上的和类上的注解 

@Pointcut("@annotation(com.test.aop.demo.MyAnnotation) || @within(com.test.aop.demo.MyAnnotation)")
public void cutController(){
}

 或者

@Pointcut("@annotation(com.test.aop.demo.MyAnnotation)")
public void cutController(){
}@Pointcut("@within(com.test.aop.demo.MyAnnotation)")
public void cutService(){
}@Pointcut("cutController() || cutService()")
public void cutAll(){
}

http://www.lryc.cn/news/58812.html

相关文章:

  • 2023年第十四届蓝桥杯javaB组省赛真题
  • CefSharp.WinForms 112.2.70最新版体验
  • leetcode每日一题:数组篇(1/2)
  • 每个企业经营者都应该了解的几个网络安全趋势
  • IDEA操作MongoDB快速上手开发
  • 从FPGA说起的深度学习(六)-任务并行性
  • 5.39 综合案例2.0 - STM32蓝牙遥控小车4(体感控制)
  • Scala之面向对象
  • 深度学习目标检测项目实战(四)—基于Tensorflow object detection API的骨折目标检测及其界面运行
  • 嵌入式工程师如何快速的阅读datasheet的方法
  • (三)合约广告
  • 【Android -- 软技能】分享一个学习方法
  • Python-DQN代码阅读(10)
  • MongoDB入坑
  • 【论文总结】针对操作系统级虚拟化的抽象资源攻击
  • C# 提取 PDF 文档中的文本
  • mac如何升级node版本、切换node版本
  • 一位大专学历的女程序员要求月薪25K,学历重要吗?来看看面试过程
  • ESP32驱动1.28寸GC9A01播放视频(一、视频分辨率的调整和视频格式的转换)
  • epoll的LT模式(水平触发)和ET模式(边沿触发)
  • Java基础面试20题
  • Java面向对象封装
  • 队列实现图书信息管理(C语言)
  • Java开发 - 读写分离初体验
  • 图文详解CAN Log文件 - ASC文件格式
  • 网络编程套接字(一)
  • Mysql数据库存储过程
  • 当我开始学习人工智能:人工智能的学派及研究目标
  • Html5钢琴块游戏制作与分享(音游可玩)
  • MySQL数据库——数据库设计概念和数据库设计步骤