zoukankan      html  css  js  c++  java
  • 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());
        }
    }
    

    研究

  • 相关阅读:
    Mvc+三层(批量添加、删除、修改)
    js中判断复选款是否选中
    EF的优缺点
    Git tricks: Unstaging files
    Using Git Submodules
    English Learning
    wix xslt for adding node
    The breakpoint will not currently be hit. No symbols have been loaded for this document."
    Use XSLT in wix
    mfc110ud.dll not found
  • 原文地址:https://www.cnblogs.com/lori/p/13528403.html
Copyright © 2011-2022 走看看