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

    研究

  • 相关阅读:
    a标签href不跳转 禁止跳转
    重新安装 tcp/ip协议
    痤疮的治疗
    tuxedo 强制重启
    山西企业主要指标稳步回升 运行渐入平稳轨道
    unix/linux 环境软件调试笔记
    连连看消重算法
    oracle sql developer guide
    取某字段最大值所在的的记录
    食指的《相信未来》
  • 原文地址:https://www.cnblogs.com/lori/p/13528403.html
Copyright © 2020-2023  润新知