Что такое Площадь весенних облаков
Когда дело доходит до экосистемы Spring Cloud, все должны быть знакомы с Feign.Как показано на рисунке ниже, Feign может скрывать базовые (okhttp, httpclient) запросы Rest, замаскированные под SpringMVC-подобный контроллер. Вам больше не нужно объединять URL-адреса, параметры и т. д., все остается за Feign. Использование Feign для вызова API похоже на вызов локального метода, что позволяет избежать утомительного постоянного анализа/инкапсуляции данных json при вызове целевого микросервиса.
Spring Cloud SquareПроект направлен на замену оригинального Spring Cloud Feign и реализацию вызовов между службами с помощью инкапсуляции базовой библиотеки коммуникационных классов в Retrofit. официально принял на себя Ribbon становится официально рекомендуемым компонентом).
Прежде чем понять Spring Cloud Square, вам необходимо понять следующие компоненты:
-
OkHttp — это сторонняя библиотека классов для сетевых запросов, которая инкапсулирует базовую реализацию операций получения, отправки и других операций сетевых запросов.В настоящее время это одна из самых популярных платформ сетевых запросов.
-
Retrofit — это фреймворк веб-запросов RESTful HTTP,Он основан на OkHttp. Он настраивает сетевые параметры через аннотации, поддерживает парсинг и сериализацию различных данных (Gson, Json, Xml и т. д., а также поддерживает RxJava.
Затем вызов службы на основе Spring Cloud Square можно абстрагировать, как показано на следующем рисунке:
Начать быстро
добавить зависимости
- Поскольку spring-cloud-square в настоящее время официально не выпущен, вам необходимо настроить репозиторий spring maven.
<repositories>
<repository>
<id>spring-milestones</id>
<url>https://repo.spring.io/milestone</url>
</repository>
</repositories>
- maven-зависимости
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-square-okhttp</artifactId>
<version>${square.version}</version>
</dependency>
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp</artifactId>
<version>${okhttp.version}</version>
</dependency>
<!--添加负载均衡支持-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-loadbalancer</artifactId>
</dependency>
Конфигурация кода
@Bean
@LoadBalanced
public OkHttpClient.Builder okHttpClientBuilder() {
return new OkHttpClient.Builder();
}
код вызова
- Как и в случае с самыми ранними вызовами ленты, это довольно просто.
@Autowired
OkHttpClient.Builder builder;
@GetMapping
public String req() {
Request request = new Request.Builder()
.url("http://square-provider/req").build();
Response response = builder.build().newCall(request).execute();
return response.body().string();
}
Расширенное использование
В качестве альтернативы Spring Cloud Feign Square также поддерживает форму декларативного клиента. Обратите внимание, что следующий код пахнет так же, как притворяться
добавить зависимости
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-square-retrofit</artifactId>
<version>${square.version}</version>
</dependency>
Объявить вызывающего клиента
@RetrofitClient("square-provider")
public interface DemoService {
@GET("/")
Call<String> req();
}
Включить сканирование клиента
@EnableRetrofitClients
код вызова
@Autowired
DemoService demoService;
@SneakyThrows
@GetMapping("/retrofit")
public String retrofit(){
return demoService.req().execute().body();
}
Суммировать
-
- Так как spring-cloud-square реализован напрямую на основе retrofit, общий исходный код очень прост, всем рекомендую его прочитать.
-
- В текущей версии не реализована реализация, связанная с откатом.
-
- Сопутствующий код для этой статьиGitHub.com/теория системы/весна…