Spring WebApp’da Properties Dosyasını Nasıl Dışarıdan Okutacağız ?

Web Uygulamanızı Run Time’da N+1 Şirket İçin Nasıl Hazır Hale Getirebilirsiniz. yazımızda WebApp başka başka firmalar için nasıl klonlayabileceğimizi mantık olarak anlatmıştım.
WebApp’ nizin bağımsız olması için uygulamanın olduğu war dosyasının dışında bir properties oluşturup, uygulamanızın bu properties dosyasından okuyarak çalışmasını sağlatmamız gerekiyor.
Web uygulamasını Spring ile geliştirdiğinizi varsayıyorum.
ApplicationContext.xml dosyasında PropertyPlaceholderConfigurer properties dosyasının dışarıdan okunması sağlanır.
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location">
<value>file:///properties/ics.properties</value>
</property>
</bean>
Bean configurasyonları bu properties dosyasından olacak şekilde DB, Mail ve Host ayarlamalarımız gerçekleştiriyoruz.
- DB Config
<bean id=”dataSource” class=”org.springframework.jdbc.datasource.DriverManagerDataSource”>
<property name=”driverClassName” value=”${jdbc.driverClassName}” />
<property name=”url” value=”${jdbc.url}” />
<property name=”username” value=”${jdbc.username}” />
<property name=”password” value=”${jdbc.password}” />
</bean>
- Mail Config
<bean id=”gMail” class=”tr.com.cs.personio.conf.EmailConf” >
<property name=”userName” value=”${email.userName}” />
<property name=”password” value=”${email.password}” />
<property name=”host” value=”${email.host}” />
<property name=”port” value=”${email.port}” />
<property name=”internetAddress” value=”${email.internetAddress}” />
</bean>
- Host Config
</bean>
<bean id=”ICSconfig” class=”tr.com.cs.personio.conf.ICSconfig” >
<property name=”hostIp” value=”${ICSconfig.hostIp}” />
<property name=”enterAndExitControlMode” value=”${ICSconfig.enterAndExitControlMode}” />
</bean>
Bu şekilde amacımız A Docker içerisindeki properties dosyası başka configurasyonu içerirken B Docker içerisindeki properties dosyasının başka konfigurasyonu içermesi ve her docker uygulamasının kendi root dizinindeki konfigurasyonlar ayağa kalmasını istiyoruz.