Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在独立库中使用Feign与在Springboot应用程序中使用Feign_Java_Spring Boot_Microservices_Spring Cloud Feign - Fatal编程技术网

Java 在独立库中使用Feign与在Springboot应用程序中使用Feign

Java 在独立库中使用Feign与在Springboot应用程序中使用Feign,java,spring-boot,microservices,spring-cloud-feign,Java,Spring Boot,Microservices,Spring Cloud Feign,我想为一些微服务创建一个客户端,作为一个库(一些微服务客户端),这样它就可以很容易地包含在其他微服务的pom中 我想使用Feign,因为它使事情变得更简单,但我不确定这在我的体系结构中是否可行。我看到的所有外部示例都是从在SpringBootAppApplication类上使用@EnableFeignClient注释开始的,但由于我不希望客户端库必须“启动”,我想知道是否可以在不使用EnableFeignClient注释的情况下将其包含在库中。是,您可以在不使用@EnableFeingClien

我想为一些微服务创建一个客户端,作为一个库(一些微服务客户端),这样它就可以很容易地包含在其他微服务的pom中

我想使用Feign,因为它使事情变得更简单,但我不确定这在我的体系结构中是否可行。我看到的所有外部示例都是从在SpringBootAppApplication类上使用@EnableFeignClient注释开始的,但由于我不希望客户端库必须“启动”,我想知道是否可以在不使用EnableFeignClient注释的情况下将其包含在库中。

是,您可以在不使用
@EnableFeingClient
注释的情况下使用。假设,我们希望从API接收数据。在下面的示例中,我使用了和依赖项

首先我们需要创建一个类,在这个类中我们将得到json结果:

public class TODO {
    private long id;
    private long userId;
    private String title;
    private boolean completed;

    \\ getters and setters ...
}
之后,我们将声明与未来rest客户端方法的接口:

public interface TaskApi {

    @RequestLine("GET /todos/{id}")
    TODO getTODO(@Param("id") int id);
}
最后,让我们构建所需的rest客户端并提出测试请求:

public class FeignTest {

    private static final String API_PATH = "https://jsonplaceholder.typicode.com";

    public static void main(String[] args) {
        TaskApi taskApi = Feign.builder()
                .decoder(new GsonDecoder())
                .target(TaskApi.class, API_PATH);
        TODO todo = taskApi.getTODO(1);
    }
}

有关更多信息和可能性,请阅读

这确实很有帮助,但由于我在单元测试FaignTest类,我无法正常模拟TaskAPI(声明中使用@mock,然后在TaskAPI.getTODO(any())时使用doReturn)。这方面有什么帮助吗?FaignTest是一个演示如何创建和使用Faign的示例类。实际上,您可以在其他位置创建TaskApi对象,并将其作为FaignTest类的构造函数参数。因此,您可以在单元测试中模拟TaskApi对象。