• 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());
        }
    }
    

    研究

  • 相关阅读:
    都是CSS惹的祸
    Ruby简介
    网络攻击利用DedeCms漏洞
    ASP.NET验证技术详解
    一个低级错误引发的血案
    FCKeditor配置和精简【附源码】
    邮件发送详解
    Timer定时器的设计实例详解
    常用的加密算法MD5、SHA1
    JS日历控件集合附效果图、源代码
  • 原文地址:https://www.cnblogs.com/lori/p/13528403.html
Copyright © 2020-2023  润新知