打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
java版spring cloud微服务架构b2b2c电子商务平台-Feign自定义注解翻译器

一 新建自定义注解MyUrl

package org.crazyit.cloud.contract; import java.lang.annotation.ElementType;import java.lang.annotation.Retention;import java.lang.annotation.RetentionPolicy;import java.lang.annotation.Target; //这个注解只能定义方法@Target(ElementType.METHOD)@Retention(RetentionPolicy.RUNTIME)public @interface MyUrl {    //为注解配置两个属性    String url();    String method();}

二 新建接口,使用MyUrl注解

package org.crazyit.cloud.contract; public interface ContractClient {     @MyUrl(url = "/hello", method = "GET")    public String hello();}

三 定义注解翻译器

package org.crazyit.cloud.contract; import java.lang.annotation.Annotation;import java.lang.reflect.Method; import feign.Contract.BaseContract;import feign.MethodMetadata; public class MyContract extends BaseContract {     @Override    protected void processAnnotationOnClass(MethodMetadata data, Class<?> clz) {        // 处理类级别注解     }     @Override    protected void processAnnotationOnMethod(MethodMetadata data,            Annotation annotation, Method method) {        // 注解是MyUrl类型的,才处理        if(MyUrl.class.isInstance(annotation)) {            MyUrl myUrl = method.getAnnotation(MyUrl.class);            String url = myUrl.url();            String httpMethod = myUrl.method();            data.template().method(httpMethod);            data.template().append(url);        }    }     @Override    protected boolean processAnnotationsOnParameter(MethodMetadata data,            Annotation[] annotations, int paramIndex) {        // 处理参数级别注解        return false;    } }

四 测试类

package org.crazyit.cloud.contract; import org.crazyit.cloud.jaxrs.RsClient; import feign.Feign;import feign.jaxrs.JAXRSContract; public class ContractMain {     public static void main(String[] args) {        ContractClient client = Feign.builder()                .contract(new MyContract())                .target(ContractClient.class,                "http://localhost:8080");        String result = client.hello();        System.out.println(result);    } }
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
spring cloud Feign使用@RequestLine注解问题
SpringCloud Alibaba 报 AbstractMethodError 是版本兼容问题导致
Spring cloud Feign调用外网
微服务框架
Spring Cloud学习教程2【面试+工作】
使用Spring Cloud Feign作为HTTP客户端调用远程HTTP服务
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服