package com.example.redisidempotence.aspect;
import com.example.redisidempotence.annotation.Idempotent;
import com.example.redisidempotence.compent.RedisIdempotentStorage;
import com.example.redisidempotence.vo.RequestData;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
import org.aspectj.lang.reflect.MethodSignature;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.lang.reflect.Method;
import java.util.Map;
@Aspect
@Component
public class IdempotentAspect {
@Resource
private RedisIdempotentStorage redisIdempotentStorage;
@Pointcut("@annotation(com.example.redisidempotence.annotation.Idempotent)")
public void idempotent() {
}
@Around("idempotent()")
public Object methodAround(ProceedingJoinPoint joinPoint) throws Throwable {
MethodSignature signature = (MethodSignature) joinPoint.getSignature();
Method method = signature.getMethod();
Idempotent idempotent = method.getAnnotation(Idempotent.class);
String field = idempotent.field();
String name = idempotent.name();
Class clazzType = idempotent.type();
String token = "";
Object object = clazzType.newInstance();
Map<String, Object> paramValue = AopUtils.getParamValue(joinPoint);
if (object instanceof RequestData) {
RequestData idempotentEntity = (RequestData) paramValue.get(name);
token = String.valueOf(AopUtils.getFieldValue(idempotentEntity.getHeader(), field));
}
if (redisIdempotentStorage.delete(token)) {
return joinPoint.proceed();
}
if(token.isEmpty()){
return "token校验失败,token不可为空";
}
return "不能重复请求";
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
Aop注解+Redis解决SpringBoot接口幂等性(源码自取) (129个子文件)
IdempotentAspect.class 3KB
RequestData.class 2KB
AopUtils.class 2KB
RedisIdempotentStorage.class 2KB
Order.class 1KB
Header.class 1KB
OrderController.class 1KB
IdGeneratorController.class 1KB
DemoApplication.class 727B
DemoApplicationTests.class 555B
Idempotent.class 545B
IdGeneratorUtil.class 506B
IdempotentStorage.class 251B
.gitignore 395B
.gitignore 0B
index.html 79B
index.html 79B
redisIdempotence.iml 10KB
IdempotentAspect.java 2KB
AopUtils.java 1KB
RedisIdempotentStorage.java 855B
IdGeneratorController.java 752B
Idempotent.java 730B
OrderController.java 713B
IdempotentStorage.java 442B
DemoApplication.java 329B
IdGeneratorUtil.java 256B
DemoApplicationTests.java 227B
RequestData.java 173B
Header.java 131B
Order.java 122B
additional-spring-configuration-metadata.json 169B
additional-spring-configuration-metadata.json 169B
HELP.md 851B
application.properties 51B
application.properties 51B
workspace.xml 9KB
pom.xml 4KB
jarRepositories.xml 864B
Maven__com_fasterxml_jackson_module_jackson_module_parameter_names_2_13_4.xml 784B
Maven__io_netty_netty_transport_native_unix_common_4_1_84_Final.xml 774B
Maven__org_springframework_boot_spring_boot_test_autoconfigure_2_6_13.xml 768B
Maven__org_springframework_boot_spring_boot_starter_data_redis_2_6_13.xml 768B
Maven__com_vaadin_external_google_android_json_0_0_20131108_vaadin1.xml 748B
Maven__org_springframework_boot_spring_boot_starter_logging_2_6_13.xml 747B
Maven__com_fasterxml_jackson_datatype_jackson_datatype_jsr310_2_13_4.xml 743B
Maven__org_springframework_boot_spring_boot_starter_tomcat_2_6_13.xml 740B
Maven__org_springframework_boot_spring_boot_autoconfigure_2_6_13.xml 733B
Maven__com_fasterxml_jackson_datatype_jackson_datatype_jdk8_2_13_4.xml 729B
Maven__org_springframework_boot_spring_boot_starter_json_2_6_13.xml 726B
Maven__org_springframework_boot_spring_boot_starter_test_2_6_13.xml 726B
compiler.xml 723B
Maven__org_springframework_boot_spring_boot_starter_web_2_6_13.xml 719B
Maven__org_apache_tomcat_embed_tomcat_embed_websocket_9_0_68.xml 708B
Maven__com_fasterxml_jackson_core_jackson_annotations_2_13_4.xml 699B
Maven__org_springframework_spring_context_support_5_3_23.xml 692B
Maven__com_fasterxml_jackson_core_jackson_databind_2_13_4_2.xml 692B
Maven__org_springframework_boot_spring_boot_starter_2_6_13.xml 691B
Maven__org_springframework_data_spring_data_keyvalue_2_6_9.xml 691B
Maven__org_springframework_data_spring_data_commons_2_6_9.xml 684B
Maven__org_junit_platform_junit_platform_commons_1_8_2.xml 681B
Maven__jakarta_activation_jakarta_activation_api_1_2_2.xml 681B
Maven__jakarta_annotation_jakarta_annotation_api_1_3_5.xml 681B
Maven__org_junit_platform_junit_platform_engine_1_8_2.xml 674B
Maven__org_apache_tomcat_embed_tomcat_embed_core_9_0_68.xml 673B
Maven__org_springframework_boot_spring_boot_test_2_6_13.xml 670B
Maven__org_springframework_data_spring_data_redis_2_6_9.xml 670B
Maven__org_junit_jupiter_junit_jupiter_params_5_8_2.xml 663B
Maven__org_junit_jupiter_junit_jupiter_engine_5_8_2.xml 663B
Maven__org_apache_tomcat_embed_tomcat_embed_el_9_0_68.xml 659B
Maven__jakarta_xml_bind_jakarta_xml_bind_api_2_3_3.xml 659B
Maven__org_springframework_spring_expression_5_3_23.xml 657B
Maven__org_apache_logging_log4j_log4j_to_slf4j_2_17_2.xml 656B
Maven__com_fasterxml_jackson_core_jackson_core_2_13_4.xml 650B
Maven__org_mockito_mockito_junit_jupiter_4_0_0.xml 646B
Maven__org_reactivestreams_reactive_streams_1_0_4.xml 643B
Maven__io_lettuce_lettuce_core_6_1_10_RELEASE.xml 642B
Maven__org_junit_jupiter_junit_jupiter_api_5_8_2.xml 642B
Maven__io_netty_netty_transport_4_1_84_Final.xml 641B
Maven__org_springframework_spring_context_5_3_23.xml 636B
Maven__org_springframework_boot_spring_boot_2_6_13.xml 635B
Maven__io_netty_netty_resolver_4_1_84_Final.xml 634B
Maven__net_bytebuddy_byte_buddy_agent_1_11_22.xml 633B
Maven__org_springframework_spring_webmvc_5_3_23.xml 629B
Maven__io_netty_netty_handler_4_1_84_Final.xml 627B
Maven__org_apache_commons_commons_pool2_2_11_1.xml 625B
Maven__ch_qos_logback_logback_classic_1_2_11.xml 623B
Maven__org_springframework_spring_beans_5_3_23.xml 622B
Maven__org_apache_logging_log4j_log4j_api_2_17_2.xml 621B
Maven__io_netty_netty_common_4_1_84_Final.xml 620B
Maven__io_netty_netty_buffer_4_1_84_Final.xml 620B
Maven__org_apiguardian_apiguardian_api_1_1_2.xml 620B
Maven__org_springframework_spring_test_5_3_23.xml 615B
Maven__org_springframework_spring_core_5_3_23.xml 615B
Maven__org_junit_jupiter_junit_jupiter_5_8_2.xml 614B
Maven__io_projectreactor_reactor_core_3_4_24.xml 614B
Maven__io_netty_netty_codec_4_1_84_Final.xml 613B
Maven__io_micrometer_micrometer_core_1_8_5.xml 612B
Maven__org_hdrhistogram_HdrHistogram_2_1_12.xml 610B
Maven__org_springframework_spring_aop_5_3_23.xml 608B
共 129 条
- 1
- 2
资源评论
暗武逢天
- 粉丝: 5348
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功