首页 > 其他分享 >Spring AOP 中@Pointcut的用法(多个Pointcut)

Spring AOP 中@Pointcut的用法(多个Pointcut)

时间:2024-01-15 19:24:09浏览次数:27  
标签:Spring void within annotation Pointcut AOP 注解 public

Spring AOP 中@Pointcut的用法(多个Pointcut)

/**
swagger切面,分开来写
**/
@Aspect
@Component
public class ApiOperationLogAspect {
    private Logger logger = LoggerFactory.getLogger(this.getClass());

    @Pointcut("@annotation(io.swagger.annotations.ApiOperation)")
    public void pointcut() {
    }

    @Around("pointcut()")
    public Object around(ProceedingJoinPoint point) {
    
    }    
}
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface FunctionLog {
    String value() default "";
}

/**
自定义切面,分开来写
**/
@Aspect
@Component
public class FunctionLogAspect {
    private Logger logger = LoggerFactory.getLogger(this.getClass());

    @Pointcut("@annotation(com.mytest.insure.annotation.FunctionLog)")
    public void pointcut() {
    }

    @Around("pointcut()")
    public Object around(ProceedingJoinPoint point) {
    
    }
}

Spring Boot AOP @Pointcut拦截注解的表达式与运算符
拦截注解的表达式有3种:@annotation、@within、@target
1、@annotation
匹配有指定注解的方法(注解作用在方法上面)
2、@within
匹配包含某个注解的类(注解作用在类上面)
3、@target
匹配目标对象有指定注解的类(注解作用在类上面)
@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(){
}

标签:Spring,void,within,annotation,Pointcut,AOP,注解,public
From: https://www.cnblogs.com/oktokeep/p/17966108

相关文章

  • Spring Boot 使用 拦截器 实现 token 验证
    SpringBoot使用拦截器实现token验证整体思路:1.写一个工具类封装生成、校验和解析token的方法;2.在注册和登录时生成token,生成的token存入redis,下次登录去redis获取,如果存在则直接返回通过3.在拦截器中校验和解析token,拿到token中有用的信息存入privatestati......
  • springboot项目配置多数据源
    springboot项目配置多数据源//关键:mybatis文件的目录需要区分开来sqlSessionFactoryBean.setMapperLocations(newPathMatchingResourcePatternResolver().getResources("classpath:mybatis.myProjectOne/*.xml"));#从数据库配置,数据库的配置以spring.datasource.myPr......
  • spring mvc GET请求方式及传参
    springmvcGET请求方式及传参@Api(tags="管理接口")@Slf4j@RestController@RequestMapping("/myOutApi/public/test")publicclassMyManageController{@AutowiredMyInfoServicemyInfoService;@ApiOperation(value="查询信息")......
  • Idea SpringBoot 子模块 加载不到该子模块根目录config下面的配置文件
    IdeaSpringBoot子模块加载不到该子模块根目录config下面的配置文件importorg.mybatis.spring.annotation.MapperScan;importorg.springframework.boot.SpringApplication;importorg.springframework.boot.autoconfigure.SpringBootApplication;importorg.springframew......
  • Spring学习记录之Spring6整合JUnit4-JUnit5
    Spring学习记录之Spring6整合JUnit4-JUnit5前言这篇文章是我第二次学习b站老杜的spring相关课程所进行的学习记录,算是对课程内容及笔记的二次整理,以自己的理解方式进行二次记录,其中理解可能存在错误,欢迎且接受各位大佬们的批评指正;关于本笔记,只是我对于相关知识遗忘时快速查阅......
  • Spring学习记录之Spring对事务的支持
    Spring学习记录之Spring对事务的支持前言这篇文章是我第二次学习b站老杜的spring相关课程所进行的学习记录,算是对课程内容及笔记的二次整理,以自己的理解方式进行二次记录,其中理解可能存在错误,欢迎且接受各位大佬们的批评指正;关于本笔记,只是我对于相关知识遗忘时快速查阅了解使......
  • springboot + mybatis plus 全局添加查询字段反引号
    配置文件添加: column-format:"`%s`"mybatis-plus:#启动时是否检查MyBatisXML文件是否存在check-config-location:true#MyBatis原生配置configuration:#字段名称下划线转驼峰命名map-underscore-to-camel-case:trueglobal-config:db-co......
  • Spring 中的设计模式详解
    1、控制反转(IoC)和依赖注入(DI)IoC是一个原则,而不是一个模式,以下模式(但不限于)实现了IoC原则。 控制反转怎么理解呢? 举个例子:"对象a依赖了对象b,当对象a需要使用对象b的时候必须自己去创建。但是当系统引入了IOC容器后,对象a和对象b之前就失去了直接的......
  • Spring 事务详解
    JavaGuide(gitee.io)1、Spring事务管理接口介绍Spring框架中,事务管理相关最重要的3个接口如下:**PlatformTransactionManager**:(平台)事务管理器,Spring事务策略的核心。**TransactionDefinition**:事务定义信息(事务隔离级别、传播行为、超时、只读、回滚规则)。**Trans......
  • SpringBoot中整合ElasticSearch实现增删改查等操作
    场景SpringBoot中整合ElasticSearch快速入门以及踩坑记录:https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/135599698在上面进行集成的基础上,实现对ES数据的增删改查等操作。注:博客:https://blog.csdn.net/badao_liumang_qizhi实现1、ElastciSearch的对象映射h......