如何在不使用Spring Boot的情况下注入Feign Client并调用REST端点

时间:2019-06-26 12:32:17

标签: spring spring-boot spring-cloud spring-cloud-feign feign

我有两个Java进程-使用不同的运行配置从同一个Jar中产生

过程A-客户端UI组件,使用基于Spring bean xml的方法开发。没有Spring Boot。

流程B-一个新的基于Springboot的组件,承载REST端点。

现在从流程A开始,在各个按钮上单击,如何使用Feign Client在流程B上调用REST端点。

注意-由于进程A是基于Spring XML的,目前我们还不能将其转换为Spring Boot。因此,@ EnableFeignClients不能用于初始化Feign客户

所以有两个问题

1)如果以上可能怎么办?

2)直到进程A移至Spring引导-Feign还是比spring REST模板更容易的选择吗?

2 个答案:

答案 0 :(得分:0)

您可以像使用自述文件示例一样,以任何代码(没有spring)初始化Feign:

public static void main(String... args) {
    GitHub github = Feign.builder()
                     .decoder(new GsonDecoder())
                     .target(GitHub.class, "https://api.github.com");
...
}

请查看入门指南:feign on github

答案 1 :(得分:0)

Feign是受Retrofit,JAXRS-2.0和WebSockets启发的Java到HTTP客户端绑定程序,您无需进行弹簧引导即可轻松使用伪装。是的,伪装仍然是更好的选择,因为伪装像Spring REST一样使用声明性方式简化了HTTP API客户端。

1)在接口中定义http方法和端点。

@Headers({"Content-Type: application/json"})
public interface NotificationClient {

    @RequestLine("POST")
    String notify(URI uri, @HeaderMap Map<String, Object> headers, NotificationBody body);
}

2)使用Feign.builder()方法创建Feign客户端。

Feign.builder()
                .encoder(new JacksonEncoder())
                .decoder(customDecoder())
                .target(Target.EmptyTarget.create(NotificationClient.class));

有各种decoders可用以简化您的任务。