Как внедрить Feign Client без использования Spring Boot и вызвать конечную точку REST - PullRequest
0 голосов
/ 26 июня 2019

У меня есть два Java-процесса, которые порождаются из одного и того же Jar-файла с использованием разных конфигураций запуска

Процесс A - компонент клиентского интерфейса, разработанный с использованием подхода на основе Spring bean xml. Там нет Spring Boot.

Процесс B - Новый компонент на основе Springboot, содержит конечные точки REST.

Теперь из Процесса А, при нажатии различных кнопок, как я могу вызвать конечные точки REST в Процессе Б, используя Feign Client.

Примечание. Поскольку процесс A основан на Spring XML, в настоящий момент мы не можем преобразовать его в загрузочную версию Spring. Следовательно, @EnableFeignClients нельзя использовать для инициализации Feign Clients

Итак, два вопроса

1) Если это возможно, как это сделать?

2) До тех пор, пока процесс A не будет переведен в Spring boot - Feign все еще проще, чем шаблон Spring REST?

Ответы [ 2 ]

0 голосов
/ 27 июня 2019

Feign - это клиентское связующее средство Java-HTTP, созданное с помощью Retrofit, JAXRS-2.0 и WebSockets, и вы можете легко использовать feign без весенней загрузки. И да, использовать симуляцию еще лучше, потому что симулируйте клиентов HTTP API, используя декларативный способ, как Spring REST .

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, используя метод Feign.builder().

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

Существуют различные декодеры , доступные в feign для упрощения ваших задач.

0 голосов
/ 27 июня 2019

Вы можете просто инициализировать Feign в любом коде (без пружины), как в примере с readme:

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

Пожалуйста, ознакомьтесь с руководством по началу работы: симулируйте на github

...