IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> fegin aop拦截 -> 正文阅读

[Java知识库]fegin aop拦截

feign调用初步了解

开始aop demo测试

以自定义注解的方式,决定哪些接口要进行feign拦截

1.自定义注解 SendBankAnnotation,对使用改注解的feign接口进行拦截

@Target({ElemenType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface SendBankAnnotation{
	//接口标识
	String value();
	//提示语
	String notes() default "";
}




2.feign远程调用
@FeignClient(name="custorm",fallback=Hysitx.class)
public interface IRemoteCallService {

	@RequestMapping(value="/custorm/getTest",method = RequestMethod.POST)
	@SendBankAnnotation(value = "自定义接口名称",notes= “备注”)
    List<String> test(BaseReq req);
}

3.aop拦截
 
 @Aspect
 @Component
 public class sendFilter{
	private Loggen logger = TSLogFactory.get(sendFilter.class);

	@Pointcut("@annotation(com....自定义注解的路径)")
	private void execute(){}

	@around("executr()")
	public Object around(ProceedingJoinPoint pjp){
	long beginTime = System.currentTimeMillis();
	Object result = null;
	String edspTransCode = "";//交易接口

	try{
		//对请求的参数进行转换
		Object[] paramValues = pjp.getArgs();//获取参数数组
		Signature sig = pjp.getSignature();//获取方法对象
		MethodSignature msig = (MethodSignature )sig;
		Method method = msig.getMethod();

		//获取自定义注解的属性值
		SendBankAnnotation ann = method.getAnnotation(SendBankAnnotation.class);
		edspTransCode = ann.value();//自定义注解的 接口名称

		if("要过滤的接口名".equals(edspTransCode )){
			BaseReq  req = null;
			Object arg0 = pjp.getArgs()[0];//接收入参
			if(arg0 instanceof BaseReq){
					req = (BaseReq).arg0;
			}
			
		}

		transformDictArgs(edspTransCode,pjp.getArgs());//抽取公共方法,对入参进行转换
		logger.inf("接口变化:+edsptranscode+",参数"+JSON.tpJSONString(paramValues ));
		result = pjp.preceed();
		//此时对返回的结果做参数转换
		transformDictResult(edspTransCode,result);
	}finally{
	long costTime = System.currenTimeMillis()-beginTime;
	logger.info("接口编号:"+edspTransCode +"耗时:"+costTime+",返回值:"+JSON.tpJSONString(result ));
	}

	}

}
  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-05-06 10:55:43  更:2022-05-06 10:56:42 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 23:59:07-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码