TGViewer
Java Portal | Программирование Java Portal | Программирование @java_iibrary · 11.7K subscribers
Post #2342 1.65K
Spring Boot: использование Spring Cloud Config для централизованного управления конфигурацией — важная практика.

Вместо того чтобы каждый сервис хранил свой application.yml, конфигурация подтягивается из единого источника.

Сначала нужно сконфигурировать сервер конфигурации.
Поднимается отдельное приложение сервера конфигурации с аннотацией @EnableConfigServer и Git-репозиторий, где лежат все .yml файлы.
Сервер отдает конфигурацию по HTTP, клиенты подтягивают её при старте.

<!-- Setting Up the Config Server -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
</dependency>


// Enable it with @EnableConfigServer annotation

@SpringBootApplication
@EnableConfigServer
public class ConfigServerApplication {

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


# Point it to your Git repository

spring:
cloud:
config:
server:
git:
uri: https://github.com/your-org/config-repo
default-label: main
clone-on-start: true

server:
port: 8888


Структура Git-репозитория следует соглашениям именования Spring Boot:

{application-name}-{profile}.yml
или
{application-name}/{profile}.yml

Клиентское приложение нужно настроить: добавить стартовую зависимость и минимальную конфигурацию.

<!-- Add the client dependency -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>


# Configure the application to fetch config from the config server

spring:
application:
name: order-service

config:
import: "optional:configserver:http://localhost:8888"

cloud:
config:
profile: dev

server:
port: 8080


Динамическое обновление конфигурации без рестарта достигается через перезагружаемые бины с аннотацией @RefreshScope:

package ...;

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);
}
}


Конфиденциальные данные должны быть зашифрованы в файлах конфигурации:

@Service
@RefreshScope
public class PricingService {

@Value("${pricing.discount.percentage:0}")
private int discountPercentage;

// This value updates when config changes, no restart needed

}


curl -X POST http://localhost:8080/actuator/refresh


👉 Java Portal
  • 👍 4
  • 🔥 2
  • ❤ 1
More from @java_iibrary
  1. Sep 23, 2026Готовимся к System Design интервью уровня Middle и Senior Полезный конспект по проектирова…
  2. Sep 23, 2026Java-разработчики, знаете разницу между Shallow Copy и Deep Copy? Вы копируете объект, но…
  3. Sep 22, 2026Java-разработчики: Почему ArrayList увеличивает свою ёмкость примерно на 50%, когда заканч…
  4. Sep 22, 2026Прогрев от Java-бабули 🙂 👉 Java Portal
  5. Sep 21, 2026Шпаргалка по проектированию веб систем System Design 101 Подробное руководство по архитект…
  6. Sep 21, 2026💡 Java/Spring: отдавайте предпочтение constructor injection вместо @Autowired для полей.…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →