文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Feign怎么自定义注解翻译器

2023-06-29 13:19

关注

本篇内容主要讲解“Feign怎么自定义注解翻译器”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Feign怎么自定义注解翻译器”吧!

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);    } }

启动服务类

测试

Hello World

Feign注解说明

Feign是常用的微服务rpc调用框架,下面对一些注解说明

@Target({ElementType.TYPE})@Retention(RetentionPolicy.RUNTIME)@Documented@Inheritedpublic @interface FeignClient {        @AliasFor("name")    String value() default "";            @Deprecated    String serviceId() default "";        String contextId() default "";            @AliasFor("value")    String name() default "";        String qualifier() default "";        String url() default "";        boolean decode404() default false;        Class<?>[] configuration() default {};        Class<?> fallback() default void.class;        Class<?> fallbackFactory() default void.class;        String path() default "";        boolean primary() default true;}

到此,相信大家对“Feign怎么自定义注解翻译器”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯