В этом примере мы покажем вам, как разработать простое приложение Spring Boot с клиентом Feign для использования службы Weather REST.
Spring Boot — это основанная на Java инфраструктура, которая упрощает создание веб-приложений и приложений для предприятий. Spring Boot имеет встроенный Tomcat, предоставляет «начальные» зависимости и не требует настройки XML.
Feign — это декларативная структура, разработанная Netflix для реализации клиентов REST API . Feign позволяет создавать клиенты REST, объявляющие и аннотирующие интерфейс, фактическая реализация предоставляется во время выполнения.
1. Проектная среда
Этот пример будет реализован с использованием следующих инструментов:
- JDK 1.8.81
- IntelliJ 2018.2.2
- Spring Boot 2.0.4
- Gradle 4.10
- Весеннее Облако Финчли.SR1
С этой информацией, начнем!
2. Создайте приложение Spring Boot
Нажмите Файл -> Создать -> Проект
Выберите Spring Initializr и выберите правильную версию JDK.
Добавьте имя группы и артефакта . Выберите Gradle Project и введите версию для своего проекта.
В следующем окне выберите параметры:
- Core -> DevTools
- Сеть -> Сеть
- Облако -> Облако Bootstrap
Выберите место для проекта и нажмите кнопку Готово .
И вуаля! У вас есть приложение Spring Boot.
3. Создайте контроллер и запустите приложение
Создайте один класс с именем FeignController . Аннотируйте Java-класс как Controller и реализуйте метод GET который возвращает ResponseEntity с фиктивными данными. После этого я собираюсь дополнить карту реальной информацией.
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
|
package com.example.feign.controller;@RestControllerpublic class FeignController { private final IWeatherClient weatherClient; @Autowired public FeignController(IWeatherClient weatherClient) { this.weatherClient = weatherClient; } @GetMapping(path = "/weather") ResponseEntity<Map> getWeather() { return ResponseEntity.ok(weatherClient.getWeather().getBody()); }} |
Отредактируйте файл application.properties с портом для развертывания приложения.
|
1
|
server.port=9090 |
Наконец, запустите и протестируйте первую версию приложения.
4. Фальсификация реализации клиента
Отредактируйте файл сборки .gradle и включите следующие зависимости:
|
1
2
3
|
compile('org.springframework.boot:spring-boot-starter-web-services')compile('org.springframework.cloud:spring-cloud-starter-openfeign')compile('org.springframework.cloud:spring-cloud-starter-config') |
Не забудьте запустить задачу сборки Gradle.
Создайте один пакет и один интерфейс. Это будет наш клиент. Я назвал это IWeatherClient
Аннотируйте интерфейс как FeignClient и добавьте один метод для получения погоды. Аннотация @FeignClient требует, чтобы вы @FeignClient имя и URL-адрес службы. В этом случае я выбрал данные, такие как имя, и использовал свойство для URL.
|
1
2
3
4
5
6
7
8
9
|
package com.example.feign.feign;@FeignClient(name = "data", url = "${feign.client.url}")public interface IWeatherClient { @RequestMapping(method = RequestMethod.GET) ResponseEntity<Map> getWeather();} |
Добавьте одну реализацию для интерфейса. Это будет запасной вариант, если что-то пойдет не так, вызывая сервис. В этом случае у меня нет запасного варианта, поэтому я возвращаю ноль.
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
|
package com.example.feign.feign.imp;@Componentpublic class WeatherFallback implements IWeatherClient { @Override public ResponseEntity<map> getWeather() { return null; }}</map> |
Аннотируйте основной класс, чтобы включить Feign Clients. Аннотация @EnableFeignClients требует, чтобы вы включили базовые пакеты.
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
|
package com.example.feign;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.cloud.openfeign.EnableFeignClients;@SpringBootApplication@EnableFeignClients(basePackages = {"com.example.feign.feign", "com.example.feign.controller"})public class FeignApplication { public static void main(String[] args) { SpringApplication.run(FeignApplication.class, args); }} |
Наконец, используйте клиент feign в контроллере и снова запустите приложение.
5. Заключение
В этой записи объясняется, как создать декларативный HTTP-клиент, использующий Feign для использования Weather API. Цель Feign — уменьшить сложность равномерного связывания знаменателя с HTTP APIS, независимо от успокоенности.









