Şuayb'in BloguŞuayb'in Blogu
Ana Sayfa
Kategoriler
Oyunlar
MediumHakkındaİletişim
Dil
Tema
    1. Blog
    2. Programlama
    3. Spring Boot Configuration Properties

Spring Boot Configuration Properties

İlk yayın4 Şubat 2026
Son güncelleme17 Şubat 2026
Okuma süresi3 dk okuma
JavaKotlinSpring BootYapılandırma
XLinkedInFacebook
Spring Boot Configuration Properties

Beğeni yükleniyor...

Son güncelleme17 Şubat 2026

Toplam görüntülenmeGörüntülenme yükleniyor...

Önceki makaleSpring Boot GraphQL JWE Kimlik DoğrulamaSonraki makaleCaptain Tsubasa: Rise of New Champions
Şuayb Şimşek

Yazan

Şuayb Şimşek

Spring Boot, güvenlik, mikroservis ve cloud-native mimari konularında pratik teknik notlar paylaşan backend odaklı fullstack geliştirici.

Uzmanlık

  • Spring Boot
  • Go
  • Mikroservis
  • Next.js
  • Cloud Native

Bağlantılar

GitHubLinkedInMedium

Benzer yazılar

Spring Boot GraphQL JWE Kimlik Doğrulama
Programlama

Spring Boot GraphQL JWE Kimlik Doğrulama

Stateless şifreli JWT’ler (JWE) ile Spring Boot GraphQL API’lerinizi güvenli hale getirmeyi; kullanıcı kimliği ve rolleri JPA ile bir veritabanında saklamayı öğrenin.

17 Mayıs 20256 dk okuma
JavaKotlinSpring BootGüvenlikJWTJWEGraphQL
Spring Boot JPA ile JWE Kimlik Doğrulaması
Programlama

Spring Boot JPA ile JWE Kimlik Doğrulaması

Stateless şifreli JWT’ler (JWE) kullanarak Spring Boot API’lerinizi güvenli hale getirirken, kullanıcı kimliklerini ve rolleri JPA destekli bir veritabanında nasıl saklayacağınızı öğrenin.

11 Mayıs 20254 dk okuma
JavaKotlinSpring BootGüvenlikJWTJWEJPA
Spring Boot LDAP ve JWE Kimlik Doğrulama
Programlama

Spring Boot LDAP ve JWE Kimlik Doğrulama

LDAP kimlik doğrulama ve JWE şifreli JWT’lerle Spring Boot API’lerinizi external directory entegrasyonu ve token gizliliği ile nasıl güvene alacağınızı öğrenin.

10 Mayıs 20253 dk okuma
JavaKotlinSpring BootGüvenlikJWTJWELDAP

Hakkımda

Spring Boot, mikroservis, güvenlik ve daha fazlası hakkında yazılar.

İletişimYeni başladıysan

Son yazılar

  • Captain Tsubasa 2: World Fighters
  • Captain Tsubasa: Rise of New Champions
  • Spring Boot Configuration Properties
  • Spring Boot GraphQL JWE Kimlik Doğrulama
  • Spring Boot JPA ile JWE Kimlik Doğrulaması

Popüler konular

JavaKotlinSpring BootGüvenlikJWEJWT

Abone ol

Yeni yazılar yayınlandığında pratik backend ve fullstack notlarını al.

Sosyal

© 2024-2026 Şuayb'in Blogu. Tüm hakları saklıdır.

Çok sayıda @Value ve dağınık ayarlarla uğraşıyorsan, @ConfigurationProperties Spring Boot’ta yapılandırmayı tip-güvenli, düzenli ve doğrulanabilir hale getirmenin en iyi yoludur.

Bu yazıda şunları öğreneceksin:

  • Yapılandırmayı sınıf olarak modelleme (Java/Kotlin)
  • Uygulama açılışında ayar doğrulama (fail fast)
  • application-{profile}.yml ile ortama göre override mantığı

🌟 Neden @ConfigurationProperties?

Bu bölümde Neden @ConfigurationProperties? konusunu netleştirip uygulamada kullanacağınız temel noktaları özetliyoruz.

  • ✅ Tip-güvenli config erişimi (IDE autocomplete, refactor dostu)
  • ✅ İlgili ayarları tek bir prefix altında toplama
  • ✅ Hatalı config’i erken yakalama (uygulama açılışında)

📋 Gereksinimler

Bu bölümde Gereksinimler konusunu netleştirip uygulamada kullanacağınız temel noktaları özetliyoruz.

  • Java 17+
  • Spring Boot 3.x
  • Maven veya Gradle

🛠️ Adım 1: application.yml içinde config tanımla

Uygulamaya özel bir prefix belirle (ör. app):

YAMLapplication.yml
app:
  security:
    enabled: true
    token-expiry-seconds: 3600
  allowed-origins:
    - 'https://example.com'
    - 'http://localhost:3000'

🛠️ Adım 2: @ConfigurationProperties sınıfını oluştur


🛠️ Adım 3: Properties sınıflarını etkinleştir

İki yaygın yöntem var:

  1. @ConfigurationProperties sınıflarını tara:
JAVADemoApplication.java
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.context.properties.ConfigurationPropertiesScan;

@SpringBootApplication
@ConfigurationPropertiesScan
public class DemoApplication {}
  1. Sadece belirli sınıfları enable et:
JAVADemoApplication.java
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.context.properties.EnableConfigurationProperties;

@SpringBootApplication
@EnableConfigurationProperties(AppProperties.class)
public class DemoApplication {}

🧪 Adım 4: Açılışta doğrula (fail fast)

Constraint ekleyip sınıfı @Validated ile işaretle.

Not: Bu doğrulamanın çalışması için classpath’te bir Bean Validation implementasyonu olmalı (örn. spring-boot-starter-validation).


🛠️ Adım 5: Profile-specific dosyaları kullan (application-{profile}.yml)

Spring Boot önce application.yml’ı okur, sonra aktif profile’a göre override dosyalarını uygular.

Örnek:

  • application.yml (varsayılanlar)
  • application-prod.yml (prod override)
YAMLconfig.yml
# application-prod.yml
app:
  security:
    enabled: true
  allowed-origins:
    - 'https://mycompany.com'

Birden fazla profile aktifse “son yazan kazanır” mantığı geçerlidir (son aktif profile, önceki profillerin değerlerini override edebilir).


🌟 İpuçları

Bu bölümde İpuçları konusunu netleştirip uygulamada kullanacağınız temel noktaları özetliyoruz.

  • Non-trivial ayarlarda @Value yerine @ConfigurationProperties kullan.
  • security, mail, storage gibi alanlara göre ayrı root’lar tanımla.
  • Boş olmaması gereken veya aralık kısıtı olan değerlerde doğrulama constraint’leri ekle.

🏁 Sonuç

Artık tip-güvenli, açılışta doğrulanan ve profile göre override edilebilen bir Spring Boot yapılandırma katmanın var. Sonraki adımda ortam bazlı gizli değerleri dışsallaştırıp regresyonları erken yakalamak için yapılandırma testleri ekleyin.

JAVAAppProperties.java
import java.util.List;

import org.springframework.boot.context.properties.ConfigurationProperties;

@ConfigurationProperties(prefix = "app")
public class AppProperties {

  private Security security = new Security();
  private List<String> allowedOrigins = List.of();

  public Security getSecurity() {
    return security;
  }

  public void setSecurity(Security security) {
    this.security = security;
  }

  public List<String> getAllowedOrigins() {
    return allowedOrigins;
  }

  public void setAllowedOrigins(List<String> allowedOrigins) {
    this.allowedOrigins = allowedOrigins;
  }

  public static class Security {
    private boolean enabled = true;
    private int tokenExpirySeconds = 3600;

    public boolean isEnabled() {
      return enabled;
    }

    public void setEnabled(boolean enabled) {
      this.enabled = enabled;
    }

    public int getTokenExpirySeconds() {
      return tokenExpirySeconds;
    }

    public void setTokenExpirySeconds(int tokenExpirySeconds) {
      this.tokenExpirySeconds = tokenExpirySeconds;
    }
  }
}
KOTLINAppProperties.kt
import org.springframework.boot.context.properties.ConfigurationProperties

@ConfigurationProperties(prefix = "app")
data class AppProperties(
  val security: Security = Security(),
  val allowedOrigins: List<String> = emptyList(),
) {
  data class Security(
    val enabled: Boolean = true,
    val tokenExpirySeconds: Int = 3600,
  )
}
JAVAAppProperties.java
import java.util.List;

import jakarta.validation.Valid;
import jakarta.validation.constraints.Min;
import jakarta.validation.constraints.NotEmpty;

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.validation.annotation.Validated;

@ConfigurationProperties(prefix = "app")
@Validated
public class AppProperties {

  @Valid
  private Security security = new Security();

  @NotEmpty
  private List<String> allowedOrigins = List.of();

  public Security getSecurity() { return security; }
  public void setSecurity(Security security) { this.security = security; }

  public List<String> getAllowedOrigins() { return allowedOrigins; }
  public void setAllowedOrigins(List<String> allowedOrigins) { this.allowedOrigins = allowedOrigins; }

  public static class Security {
    private boolean enabled = true;

    @Min(60)
    private int tokenExpirySeconds = 3600;

    public boolean isEnabled() { return enabled; }
    public void setEnabled(boolean enabled) { this.enabled = enabled; }

    public int getTokenExpirySeconds() { return tokenExpirySeconds; }
    public void setTokenExpirySeconds(int tokenExpirySeconds) { this.tokenExpirySeconds = tokenExpirySeconds; }
  }
}
KOTLINAppProperties.kt
import jakarta.validation.Valid
import jakarta.validation.constraints.Min
import jakarta.validation.constraints.NotEmpty
import org.springframework.boot.context.properties.ConfigurationProperties
import org.springframework.validation.annotation.Validated

@ConfigurationProperties(prefix = "app")
@Validated
data class AppProperties(
  @field:Valid
  val security: Security = Security(),

  @field:NotEmpty
  val allowedOrigins: List<String> = emptyList(),
) {
  data class Security(
    val enabled: Boolean = true,

    @field:Min(60)
    val tokenExpirySeconds: Int = 3600,
  )
}