增加依赖

<!--   增加redis依赖     -->        <dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter-data-redis</artifactId>        </dependency><!--   增加aop依赖     -->        <dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter-aop</artifactId>        </dependency><!--   增加jedis依赖     -->        <dependency>            <groupId>redis.clients</groupId>            <artifactId>jedis</artifactId>            <version>2.8.2</version>        </dependency>

配置redis(application-redis.properties)

spring.redis.host=localhostspring.redis.port=6379redis.host=localhostredis.port=6379

配置redis(RedisConfig)

@Configuration@PropertySource("classpath:/application-redis.properties")public class RedisConfig {    @Value("${redis.host}")    private String host;    @Value("${redis.port}")    private Integer port;    @Bean    public Jedis jedis(){        return new Jedis(host,port);    }}

自定义注解(NoRepeatSubmit)

@Target(ElementType.METHOD)@Retention(RetentionPolicy.RUNTIME)public @interface NoRepeatSubmit {    /**     * 指定工夫内不可反复提交,单位毫秒秒     * @return     */    int timeOut() default 3000;}

AOP(RepeatSubmit)

@Aspect@Componentpublic class RepeatSubmit {    @Around("@annotation(noRepeatSubmit)")    public Object around(ProceedingJoinPoint joinPoint, NoRepeatSubmit noRepeatSubmit){//        获取注解        MethodSignature signature = (MethodSignature) joinPoint.getSignature();        Method method = signature.getMethod();//        获取类,办法        String className = method.getDeclaringClass().getName();        String methodName = method.getName();//        组装key用户惟一标识+操作和办法        String key = "tokenKey" + className + methodName;//        获取超时工夫        int timeOut = noRepeatSubmit.timeOut();//        创建对象 判断key值是否存在 无则抛出  有则增加redis缓存中 设置工夫生效        Jedis jedis = new Jedis();        if (jedis.exists(key)){            System.out.println("请勿反复申请拦挡");            throw new RuntimeException("请勿反复申请拦挡");        }else{            jedis.set(key,"申请胜利");            System.out.println("申请胜利");            jedis.pexpire(key,timeOut);        }        Object proceed = null;        try {            proceed = joinPoint.proceed();        } catch (Throwable throwable) {            throwable.printStackTrace();        }        return proceed;    }}

controller应用

@RestControllerpublic class MessageController {    @CrossOrigin    @DeleteMapping("deleteMessage")    @NoRepeatSubmit(timeOut = 3000)    public String deleteMessage(@RequestBody Message message){        int i = messageService.deleteMusic(message.getId());        if (i>=1){            return "数据删除胜利";        }else {            return "数据删除失败,请重试!";        }    }    @CrossOrigin    @PostMapping("updateMessage")    @NoRepeatSubmit(timeOut = 3000)    public String updateMessage(@RequestBody Message message){        if(message.getSex().equals("男")){            message.setSex("1");        }else if (message.getSex().equals("女")){            message.setSex("2");        }        int i = messageService.updateMusic(message);        if (i>=1){            return "数据批改胜利";        }else {            return "数据批改失败,请重试!";        }    }}