@Value etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
@Value etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

7 Eylül 2023 Perşembe

@Value Anotasyonu - Ortam Değişkeni Okuma

Örnek
Şöyle yaparız
@Value("${env.SOME_ENV_VARIABLE:defaultValue}")
private String someEnvVariable;

SpringContext @Value Anotasyonu - Map Okuma

Örnek
application.properties dosyası şöyle olsun.
app.mappings={key1:'value1', key2:'value2'}
Şöyle yaparız.
@Value("#{'${app.mappings}")
private Map<String,String> mappings;
Örnek
application.properties dosyası şöyle olsun.
employee.age={one:'26', two : '34', three : '32', four: '25'}
Şöyle yaparız.
@Value("#{'${employee.age}")
private Map<String,Integer> employeeName;
Belli bir key değerine erişmek için şöyle yaparız.
@Value("#{'${employee.age}.two")
private String employeeName;
Belli bir value değerine erişmek için şöyle yaparız. Eğer value yoksa varsayılan değer olarak 30 gelir.
@Value("#{'${employee.age}.['two'] ?: 30")
private Integer employeeAge;

SpringContext @Value Anotasyonu - List Okuma

Giriş

Örnek
Elimizde şöyle bir kod olsun.
app.roles=ADMIN,USER,GUEST
Şöyle yaparız. Burada Spring Expression Language kullanılıyor.
"#{'${app.role}'.split(',')}"
private String[] role;
Örnek
Elimizde şöyle bir kod olsun.
prefix.list= some,stuff,with,comma,separators
Şöyle yaparız. Burada Spring Expression Language kullanılıyor.
"#{'${prefix.list}'.split(',')}"
private String[] array;
Örnek - Split İşlemi
application.properties dosyası şöyle olsun.
employee.names=Petey Cruiser,Anna Sthesia,Paul Molive,Buck Kinnear
Şöyle yaparız.
@Value("#{'${employee.names}'.split(',')}")
private List<String> employeeName;
Eğer sadece ilk elemana erişmek istersek şöyle yaparız.
@Value("#{'${employee.names}'.split(',')[0]}")
private String employeeName;
Örnek

application.properties şöyle olsun.
video.output.directory = C:\\Users\\Alex\\Desktop\\output

# Target Sites
target.sites[0] = https://youtube.com
target.sites[1] = https://bing.com
Şöyle yaparız.
@Configuration
public class WatchConfiguration {
  @Value("${video.output.directory}")
  private String videoDirectory;

  @Value("${target.sites}")
  private List<String> targetSites;
  ...
}

SpringContext @Value Anotasyonu - Conditional Değer Okuma

Giriş
Bu örneklerde SpEL kullanılıyor

Örnek
Şöyle yaparız
@Value("#{${app.debug} ? ${app.name.debug} : ${app.name}}"")
private Integer employeeAge;

SpringContext @Value Anotasyonu - Array Okuma

Giriş
application.properties dosyasında değerin virgül ile ayrılması gerekir

Örnek
Elimizde şöyle bir kod olsun.
prefix.list   = some,stuff,with,comma,separators
Şöyle yaparız.
@Value("${prefix.list}")
private String[] array;

SpringContext @Value Anotasyonu - Varsayılan Değer Okuma

Giriş
Eğer istenilen değer yoksa varsayılan değer atamak için ":" karakteri ile ayırırız.

Örnek
Şöyle yaparız.
"${myparam:some default}"
Örnek
Şöyle yaparız. app.version tanımlı değilse "1.0" değerini alır
@Value("${app.version:1.0}")
private String appVersion;
Örnek
Şöyle yaparız
@Value("${value.path:defaultPath}")
private String keystorePath;

SpringContext @Value Anotasyonu - System Property Okuma

Giriş
"#{systemProperties['...']}" şeklide kullanılır

Örnek
Şöyle yaparız.
@Value("#{systemProperties['java.home']}")
public String javaHome;
Örnek
JVM'e geçilen parametrelerin otomatik olarak değişkene atanmasını sağlar. JVM'i şöyle başlatalım.
-Dtls.keyAlias=tomcat
-Dtls.key-store-password=cGFzc3dvcmQ=
Pojo'yu şöyle yaparız.
@Component
public class SSLConfig {

  @Value("#{systemProperties['tls.keyAlias']}")
  public String keyAlias;

  @Value("#{systemProperties['tls.key-store-password']}")
  private String keyPassword;

  // getters and setters
}