Spring Framework Property Placeholder kullanımı

Kübra Utman
2 min readMar 14, 2022

--

Merhaba arkadaşlar bu yazımda sizlere Spring Framework de placeholder kullanımından bahsetmek istiyorum.

<context:property-placeholder /> tagı PropertyPlaceholderConfigurer ı otomatik ayarlayıp configure eder ve böylece properties dosyalarındaki değerlere @value anotation ı sayesinde ${} ile içindeki değerleri okuyabiliriz.

Öncelikle applicationContext.xml de kullanmak isteğimiz dosyalar için bu tagı ekliyoruz. Buraya birden fazla properties dosyası vermek istiyorsak araya virgül koyup ekleyebiliriz.

<context:property-placeholder location="file:/application.properties" />

application.properties dosyasındaki değerleri set ve get edeceğimiz bean i de aynı şekilde applicationContext.xml dosyasında ekliyoruz.

<bean id="configparameter" class="com.utmn.parameters.ConfigParameters" />

Gelelim bean i mize, ConfigParamaters da şimdi ${} ile beraber değerlerimizi alabiliriz.

@Data
public class ConfigParameters{
@Value("${projectVersion}")
private String projectVersion;
@Value("${userName}")private String userName;}

application.properties dosyamızda şu şekildedir.

projectVersion = 3.4.2
username=testuser

Fallback ve override system properties

Default olarak, placeholder belirtilen properties dosyaları tarafından çözülemezse, Spring bunu bir system property ile çözmeye çalışacaktır. Örneğin, Spring ${user.dir} placeholder çözemezse , karşılık gelen user.dir system property i deneyecektir . Bu çağrı , system properties modu fallback dir. PropertyPlaceholderConfigurer’ın systemPropertiesModeName adlı bir property belirterek bu davranışı değiştirebiliriz

<context:property-placeholder system-properties-mode="FALLBACK"location="file:/application.properties" />

Spring, aşağıdaki gibi üç mod sağlar:

  • FALLBACK : Bu, yukarıda belirtildiği gibi varsayılan moddur.
  • OVERRIDE : Spring önce placeholder ı system property ile çözecektir. Bir system property varsa, değeri, properties dosyasındaki değeri geçersiz kılar.
  • NEVER : Spring, placeholder ı çözümlerken sistem özelliklerini dikkate almaz.

İstisnaları yoksaymak (Ignore Exceptions)

Spring, bir properties dosyası bulamazsa veya bir placeholder ı çözemezse varsayılan olarak bir exception fırlatır. Bu, uygulamanın başlamamasına neden olur.

Bir properties dosyasının bulunamaması durumunda atılacak olan exception yok saymak için PropertyPlaceholderConfigurer bean’in aşağıdaki özelliğini belirtin:

<context:property-placeholder system-properties-mode="FALLBACK" location="file:/application.properties" ignore-resource-not-found="true />

--

--

No responses yet