Как внедрить Feign Client без использования Spring Boot и вызвать конечную точку REST

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

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

Процесс B - новый компонент на основе Springboot, в котором размещаются конечные точки REST.

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

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

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

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

2) Пока процесс A не будет перенесен в загрузку Spring - является ли Feign более простым вариантом, чем шаблон Spring REST?


person Anirban Banerjee    schedule 26.06.2019    source источник


Ответы (2)


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

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

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

person Michal Rorat    schedule 26.06.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));

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

person Muhammad Usman    schedule 27.06.2019
comment
@AnirbanBanerjee, если это сработает, вы можете принять ответ, это поможет другим найти решение относительной проблемы. - person Muhammad Usman; 02.07.2019