Spring Framework Property Placeholder kullanımı
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 />