Spring Boot Config Server, dağıtılmış uygulamalar için merkezi yapılandırma yönetimi sağlar ve hizmetlerin yeniden başlatılmasına gerek kalmadan dinamik yapılandırma güncellemelerine olanak tanır. Bu kılavuz, Spring Boot Config Server'ı nasıl kuracağınızı ve etkin bir şekilde kullanacağınızı açıklar.
🌟 Neden Config Server Kullanmalıyız?
- Merkezi Yapılandırma: Uygulama ayarlarını tek bir yerde yönetin.
- Dinamik Güncellemeler: Yapılandırmaları hizmetleri yeniden başlatmadan güncelleyin.
- Environment Profilleri: Geliştirme, test ve üretim ortamları için farklı yapılandırmaları destekler.
- Güvenlik ve Erişim Kontrolü: Hassas yapılandırmaları güvenli bir şekilde saklayın.
- Git Entegrasyonu: Yapılandırma sürümlerini yönetmek ve izlemek için Git kullanın.
🌟 Gereksinimler
Aşağıdaki bileşenlerin sisteminizde yüklü olduğundan emin olun:
- ☕ Java Development Kit (JDK) 17+
- 📦 Maven veya Gradle yüklü
- 📁 Git Deposu (Yapılandırmaları saklamak için)
🛠 Adım 1: Bağımlılıkları Ekleyin
Spring Cloud Config Server için gerekli bağımlılıkları ekleyin.
Maven Yapılandırması:
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-config-server</artifactId> </dependency>
Gradle Yapılandırması:
implementation 'org.springframework.cloud:spring-cloud-config-server'
📖 Adım 2: Config Server Uygulamasını Oluşturma
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); } }
package com.example.configserver import org.springframework.boot.autoconfigure.SpringBootApplication import org.springframework.boot.runApplication import org.springframework.cloud.config.server.EnableConfigServer @SpringBootApplication @EnableConfigServer class ConfigServerApplication fun main(args: Array<String>) { runApplication<ConfigServerApplication>(*args) }
🛠 Adım 3: Config Server'ı Yapılandırma
Config ayarlarını saklamak için Git deposunu belirten bir application.yml
dosyası oluşturun.
server: port: 8888 spring: cloud: config: server: git: uri: https://github.com/example/config-repo default-label: main
Not:
https://github.com/example/config-repo
adresini kendi Git deponuzla değiştirin.
📂 Adım 4: Konfigürasyon Deposu Oluşturma
Git deposunda (config-repo
) bir application.yml
dosyası oluşturun:
config.key: 'Merhaba, Config Server!'
Dosyayı ekleyip gönderin:
git add application.yml git commit -m "Konfigürasyon dosyası eklendi" git push origin main
▶️ Config Server'ı Çalıştırma
Config Server uygulamasını başlatın:
./mvnw spring-boot:run
veya Gradle kullanarak:
gradle bootRun
Config Server'ın çalıştığını doğrulamak için şu komutu çalıştırın:
curl -X GET http://localhost:8888/application/default
Beklenen Çıktı:
{ "name": "application", "profiles": ["default"], "propertySources": [ { "name": "https://github.com/example/config-repo/application.yml", "source": { "config.key": "Merhaba, Config Server!" } } ] }
📌 Adım 5: İstemci Uygulamayı Yapılandırma
Bağımlılıkları Ekleme
Maven:
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-config</artifactId> </dependency>
Gradle:
implementation 'org.springframework.cloud:spring-cloud-starter-config'
🔧 İstemci Uygulama Yapılandırması
İstemci uygulamanın bootstrap.yml
dosyasına aşağıdaki ayarları ekleyin:
spring: application: name: config-client cloud: config: uri: http://localhost:8888
🔧 İstemci Uygulama Kodu
package com.example.configclient; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.beans.factory.annotation.Value; @SpringBootApplication @RestController @RequestMapping("/config") public class ConfigClientApplication { @Value("${config.key:not found}") private String configValue; @GetMapping public String getConfigValue() { return "Konfigürasyon Değeri: " + configValue; } public static void main(String[] args) { SpringApplication.run(ConfigClientApplication.class, args); } }
package com.example.configclient import org.springframework.boot.autoconfigure.SpringBootApplication import org.springframework.boot.runApplication import org.springframework.web.bind.annotation.GetMapping import org.springframework.web.bind.annotation.RequestMapping import org.springframework.web.bind.annotation.RestController import org.springframework.beans.factory.annotation.Value @SpringBootApplication @RestController @RequestMapping("/config") class ConfigClientApplication { @Value("\${config.key:not found}") private lateinit var configValue: String @GetMapping fun getConfigValue(): String { return "Konfigürasyon Değeri: $configValue" } } fun main(args: Array<String>) { runApplication<ConfigClientApplication>(*args) }
🏃 İstemci Uygulamayı Çalıştırma
İstemci uygulamasını başlatmak için:
./mvnw spring-boot:run
veya Gradle kullanarak:
gradle bootRun
Config Server'dan konfigürasyonu almak için:
curl -X GET http://localhost:8080/config
Beklenen Çıktı:
Konfigürasyon Değeri: Merhaba, Config Server!
Spring Boot Config Server, dağıtılmış uygulamalar için konfigürasyon yönetimini basitleştirir. Merkezi bir konfigürasyon depolama ile uygulamalar yeniden başlatılmadan değişikliklere dinamik olarak adapte olabilir, bu da bakım ve ölçeklenebilirliği arttırır.