JavaRush /Курсы /Модуль 5. Spring /Лекция 223: Практика: настройка Spring Cloud Config Serve...

Лекция 223: Практика: настройка Spring Cloud Config Server

Модуль 5. Spring
23 уровень , 2 лекция
Открыта

В предыдущих лекциях мы познакомились с концепцией централизованного управления конфигурациями и возможностями Spring Cloud Config. Сегодня мы не будем углубляться в теорию, а сразу перейдём к практике, потому что, как говорится, теория без практики — это как код без тестов: вроде работает, но что-то не так.

Сегодня мы создадим Spring Cloud Config Server, подключим его к репозиторию Git и проверим, как он раздаёт конфигурации. Погнали!


Шаг 1: Создание проекта Spring Cloud Config Server

1.1 Используем Spring Initializr

Создать новый проект можно на сайте Spring Initializr или через ваш любимый IDE. Вот основные параметры, которые нужно указать:

  • Project: Maven
  • Language: Java
  • Spring Boot Version: 3.0.0 (или последняя стабильная версия)
  • Dependencies: добавляем Spring Cloud Config Server

Или же просто скопируйте эту строку в ваш pom.xml, если создаёте проект вручную:


<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-config-server</artifactId>
</dependency>

И не забудьте добавить BOM для Spring Cloud, чтобы всё работало корректно:


<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>2022.0.0</version> <!-- Замените на актуальную версию -->
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

Теперь у вас есть базовый проект!

1.2 Аннотация @EnableConfigServer

Для того чтобы наш проект мог стать Config Server, достаточно одной магической аннотации. Открываем файл Application.java и добавляем:


import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.config.server.EnableConfigServer;

@SpringBootApplication
@EnableConfigServer // Включаем функциональность Spring Cloud Config Server
public class ConfigServerApplication {
    public static void main(String[] args) {
        SpringApplication.run(ConfigServerApplication.class, args);
    }
}

Коротко и мощно.


Шаг 2: Настройка хранилища конфигураций

2.1 Настраиваем Git-репозиторий

Настройки Config Server будут храниться в репозитории Git. Для этого:

  1. Создайте пустой репозиторий на GitHub, GitLab или в локальной системе.
  2. Добавьте простой конфигурационный файл. Например, создайте application.properties или application.yml:

# application.properties в репозитории
example.property=Hello from the Config Server!

Подсказка: имя файла должно соответствовать формату {application-name}.properties или {application-name}.yml. Это важно для распределения конфигураций между микросервисами.


2.2 Конфигурация Config Server

Теперь нужно указать Config Server, где искать конфигурационные файлы.

В application.yml нашего Config Server приложения добавляем следующий блок:


server:
  port: 8888 # Config Server будет работать на порту 8888

spring:
  cloud:
    config:
      server:
        git:
          uri: https://github.com/ваш-пользователь/ваш-репозиторий # Укажите URL репозитория
          default-label: main # Ветка репозитория (main, master или другая)

Если ваш репозиторий закрыт (приватный), добавьте логин и пароль:


spring:
  cloud:
    config:
      server:
        git:
          uri: https://github.com/ваш-пользователь/ваш-репозиторий
          username: ваш-логин
          password: ваш-пароль

2.3 Проверяем работу Config Server

Запустите ваше приложение Config Server. Если всё настроено правильно, перейдите по адресу:

http://localhost:8888/{application}/{profile}/{label}

Пример:

http://localhost:8888/application/default

Это вернёт данные конфигурации из репозитория Git. Вы увидите что-то вроде:


{
  "name": "application",
  "profiles": ["default"],
  "label": "main",
  "version": "123abc", 
  "propertySources": [
    {
      "name": "https://github.com/ваш-пользователь/ваш-репозиторий/application.properties",
      "source": {
        "example.property": "Hello from the Config Server!"
      }
    }
  ]
}

Поздравляю! Ваш Config Server работает.


Шаг 3: Подключение клиента к Config Server

3.1 Настройка клиента

Теперь создадим клиентское приложение, которое будет получать конфигурации с Config Server.

  1. Создайте новый Spring Boot проект.
  2. Добавьте зависимость Spring Cloud Config Client:

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-config</artifactId>
</dependency>
  1. Настройте файл application.yml клиента:

spring:
  application:
    name: my-client-application # Имя приложения должно совпадать с конфигурационным файлом в репозитории (my-client-application.properties)
  cloud:
    config:
      uri: http://localhost:8888 # URL нашего Config Server

3.2 Используем полученные конфигурации

Создадим REST-контроллер, чтобы проверить, получили ли мы конфигурацию. Например:


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

@RestController
public class ConfigClientController {

    @Value("${example.property}") // Получаем значение из Config Server
    private String exampleProperty;

    @GetMapping("/config")
    public String getConfig() {
        return "Value of 'example.property' is: " + exampleProperty;
    }
}

Теперь запускаем клиент и открываем:

http://localhost:8080/config

Вы увидите:

Value of 'example.property' is: Hello from the Config Server!

Типичные ошибки и их исправление

Если ваш Config Server или клиент не работает, вот несколько проверок:

  1. Config Server возвращает ошибку 404, 401 или 500. Проверьте:
    • URL и доступность репозитория.
    • Логин/пароль (если репозиторий приватный).
    • Находятся ли конфигурационные файлы в указанной ветке.
  2. Клиент не может подключиться к Config Server.

    • Проверьте spring.cloud.config.uri в конфигурации клиента.
    • Убедитесь, что Config Server запущен и доступен по указанному порту.
  3. Клиент не получает конфигурацию.

    • Убедитесь, что имя клиента (spring.application.name) совпадает с названием файла в репозитории.
    • Убедитесь, что файл доступен и корректен.

Теперь у вас есть рабочий Spring Cloud Config Server! Представьте, какую мощь он даёт для централизованного управления микросервисами. В следующей лекции мы научимся обновлять конфигурации "на лету", чтобы ваши приложения могли менять настроение так же быстро, как программисты меняют код.

Комментарии
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ