Рубрики
Без рубрики

Введение в конфигурацию Spring Cloud

В своей предыдущей статье я упомянул четыре продукта/приложения для управления конфигурацией в micro… Помеченный микросервисами, java.

В своей предыдущей статье я упомянул четыре продукта/приложения для управления конфигурацией в архитектуре микросервисов. В этой статье мы объясним первый вариант (конфигурация Spring Cloud)

Что такое конфигурация spring cloud

Конфигурация Spring cloud является частью набора инструментов spring cloud для разработки облачных собственных приложений и микросервисов. Он обеспечивает серверную и клиентскую поддержку для внешних конфигураций в распределенных системах.

Проще говоря, spring cloud config – это обычный проект spring, который считывает конфигурации из централизованного хранилища конфигураций и предоставляет эти конфигурации другим приложениям (микросервисам).

Настройка сервера конфигурации.

Получить сервер конфигурации spring cloud так же просто, как создать любой другой проект spring.

  • Перейдите в start.spring.io
  • Задайте для имени проекта (артефакта) значение config-server и в разделе зависимости добавьте сервер конфигурации.
  • Загрузите архивированный файл (config-server.zip).
  • Извлечь проект $распаковать config-server.zip .
  • В классе ConfigServerApplication добавьте @enableconfigserver аннотацию.
package com.example.configserver;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.config.server.EnableConfigServer

@SpringBootApplication
@EnableConfigServer
public class ConfigServerApplication {

    public static void main(String[] args) {
         SpringApplication.run(ConfigServerApplication.class, args);
    }
}
  • Выполните следующие команды, чтобы создать локальный репозиторий git. Этот репозиторий git будет использоваться сервером spring config в качестве источника конфигурации для другой службы.
$mkdir config-repo
$cd config-repo
$echo "foo.property=property_dev_value" > my-service-dev.properties
$echo "foo.property=property_sit_value" > my-service-sit.properties
$echo "foo.property=property_prod_value" > my-service-prod.properties
$git init
$git add .
$git commit -m"Adding configurations"
  • Добавьте следующие свойства в файл application.properties .
spring.cloud.config.server.git.uri=file://${user.home}/config-repo
spring.cloud.config.server.git.clone-on-start=true
  • Создайте проект $cd config-сервер &&чистый пакет mvn .
  • Запустите проект $java-jar target/config-сервер. Запустите проект $java-jar target/config-сервер.

Теперь у вас есть и работает полнофункциональный сервер конфигурации.

Создание клиентского приложения spring boot.

Теперь нам нужно создать другое приложение, которое будет действовать как микросервисы, которым необходимо загрузить свою конфигурацию с нашего сервера конфигурации. Очевидно, что мы будем использовать spring boot и другую часть проекта spring cloud config (клиентская библиотека). Есть два момента, которые мы должны упомянуть здесь, прежде чем приступать к этапам создания клиента.

  1. Поскольку конфигурацию любого проекта обычно необходимо загружать в процессе запуска, нам необходимо изменить поведение начальной загрузки приложения. Это происходит просто путем добавления нового файла bootstrap.properties в каталог ресурсов.
  2. Связующим звеном между клиентским приложением и сервером конфигурации является имя приложения. В нашем случае мой-сервис .

Вот шаги, необходимые для создания клиентского приложения.

  • Как обычно, перейдите в start.spring.io
  • задайте для имени проекта (артефакта) значение my-service.
  • добавьте клиент конфигурации в зависимости.
  • Изменение Приложение myserviceприложение.java класс должен быть следующим
package com.example.myservice;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.context.config.annotation.RefreshScope;

@SpringBootApplication
@RefreshScope
public class MyserviceApplication {

    public static void main(String[] args) {
        SpringApplication.run(MyserviceApplication.class, args);
    }

}
  • Добавьте файл bootstrap.properties в каталог ресурсов и запишите в него следующую конфигурацию.
server.port=8081
spring.application.name=my-service
spring.cloud.config.uri=http://localhost:8080

Свойство spring.cloud.config.url указывает на URL-адрес сервера конфигурации.

  • Для тестирования мы создадим контроллер REST Контроллер конфигурации , введите значение из файлов свойств на сервере конфигурации ( foo.property ), затем отобразите значение. Для этой цели создайте следующий класс.
package com.example.myservice;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class ConfigController{


    @Value("${foo.property: nothing}")
    private String configProperty;


    @GetMapping("/getConfigs")
    public String getConfigProperty(){
        return this.configProperty;
    }
}
  • Пакет клиентского приложения чистый пакет $mvn
  • Запустите клиентское приложение $java -jar target/моя служба. Запустите клиентское приложение $java -jar target/моя служба. . Теперь, если вы откроете этот URL-адрес ( http://localhost:8081/getConfigs ) в браузере вы должны увидеть отображаемое значение foo.свойства
  • . Если вы хотите получить конфигурацию другого профиля, вам необходимо установить свойство spring.profiles.active в файле bootstrap.properties
spring.profiles.active=prod

Теперь, если вы упакуете и повторно запустите приложение, вы получите значение того же свойства из профиля prod .

Заключительная нота.

На момент написания этой статьи я столкнулся с проблемой запуска и запуска клиента с использованием версии spring boot 2.4.0 . Мне пришлось использовать предыдущую стабильную версию 2.3.6 .

Оригинал: “https://dev.to/devfanooos/introduction-to-spring-cloud-config-52ac”