springboot aspect通过@annotation进行拦截的实例代码详解

 更新时间:2020年08月19日 12:38:40   作者:张占岭  
这篇文章主要介绍了springboot aspect通过@annotation进行拦截的方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

annotation就是注解的意思,在我们使用的拦截器时,可以通过业务层添加的某个注解,对业务方法进行拦截,之前我们在进行统一方法拦截时使用的是execution,而注解的拦截我们使用@annotation即可,我们可以做个例子,比如搞个防止重复提交的注解,然后在拦截器里去写防止重复提交的逻辑就好了。

拦截器数据源

/**
 * 防止重复提交
 *
 * @author BD-PC220
 */
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD})
public @interface RepeatSubmit {
  /**
   * 间隔多长时间提交,默认1秒
   *
   * @return
   */
  long time() default 1;

  /**
   * 作为验证重复提交的key,
   *
   * @return
   */
  String key();
}

业务实现的拦截器代码

/**
 * URL重复提交拦截器.
 */
@Slf4j
@Component
@Aspect
public class RepeatSubmitAspect {
  @Autowired
  StringRedisTemplate redisTemplate;

  @Around("@annotation(repeatSubmit)")
  public Object around(ProceedingJoinPoint proceedingJoinPoint, RepeatSubmit repeatSubmit) throws Throwable {
    log.info("repeatSubmit={}", repeatSubmit.toString());
  }
}

在单元测试里去建立业务方法,然后建立单元测试的方法等

@Component
public class RepeatSubmitController {
  @RepeatSubmit(key = "get")
  public String get() {
    return "success";
  }
}

测试代码

@RunWith(SpringRunner.class)
@SpringBootTest()
@Slf4j
public class RepeatSubmitTest {
  @Autowired
  RepeatSubmitController repeatSubmitController;

  @Test
  public void test() {
    log.info(repeatSubmitController.get());
  }
}

到此这篇关于springboot aspect通过@annotation进行拦截的文章就介绍到这了,更多相关springboot aspect通过@annotation拦截内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Spring框架实现文件上传功能

    Spring框架实现文件上传功能

    这篇文章主要为大家详细介绍了Spring框架实现文件上传功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-11-11
  • spring中@ControllerAdvice 注解的使用

    spring中@ControllerAdvice 注解的使用

    @ControllerAdvice注解是Spring3.2中新增的注解,主要用于Controller的全局配置,本文就来介绍一下spring中@ControllerAdvice 注解的使用,感兴趣的可以了解一下
    2024-09-09
  • Springboot RocketMq实现过程详解

    Springboot RocketMq实现过程详解

    这篇文章主要介绍了Springboot RocketMq实现过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-05-05
  • Java经纬度小数与度分秒相互转换工具类示例详解

    Java经纬度小数与度分秒相互转换工具类示例详解

    这篇文章主要介绍了Java经纬度小数与度分秒相互转换工具类,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-07-07
  • 总结Java中线程的状态及多线程的实现方式

    总结Java中线程的状态及多线程的实现方式

    Java中可以通过Thread类和Runnable接口来创建多个线程,线程拥有五种状态,下面我们就来简单总结Java中线程的状态及多线程的实现方式:
    2016-07-07
  • mybatis映射文件操作存储过程的实现

    mybatis映射文件操作存储过程的实现

    本文主要介绍了mybatis映射文件操作存储过程的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-03-03
  • java实现可视化日历

    java实现可视化日历

    这篇文章主要为大家详细介绍了java实现可视化日历,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-09-09
  • Java类加载连接和初始化原理解析

    Java类加载连接和初始化原理解析

    这篇文章主要介绍了Java类加载连接和初始化原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-03-03
  • Dubbo之降级Mock源码分析

    Dubbo之降级Mock源码分析

    这篇文章主要为大家介绍了Dubbo降级Mock源码分析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-09-09
  • Failed to execute goal org...的解决办法

    Failed to execute goal org...的解决办法

    这篇文章主要介绍了Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1的解决办法的相关资料,需要的朋友可以参考下
    2017-06-06

最新评论