İpucu: Spring Framework ile dışarıdan konfigurasyon dosyası okumak
Uygulamalar geliştirilirken, veritabanı vb ile ilgili bağlantıları sağlayan konfigurasyonları, uygulama içerisine gömülü yazmaktansa, sonradan zahmetsizde değiştirmek ve uygulumayı baştan derlemek zorunda kalmakak için dışındaki bir dosyadan okumak tercih edilir.
Bu işlemin Spring framework kullanılarak nasıl yapılacağına bakalım. Spring de bu işlem için PropertyPlaceholderConfigurer isimli sınıftan yararlanacağız. Bu yazıda hibernate konfigurasyon bilgilerini dışarıdan okuyan bir örnek yapalım.
ilk etapda C:\droidpark\database.properties isminde bir dosya oluşturalım. Bu dosyayı oluşturduktan sonra en sevdiğimiz metin editörü notepad++ ile düzenleyelim ve aşağıdaki hibernate konfigurasyonlarını yazalım.
Değişiklikleri kaydettikten sonra. Application Server'ı çalıştırmadan önce -Dcom.droidpark.databaseConfigFile="C:\droidpark\database.properties" şeklinde bir JVM parametresini run configurasyon'una ekliyoruz.
Bu eklemelerden sonra sıra geldi spring içerisinden bu dosyayı okuyalım ve değişkenleri gerekli yerlerde kullanalım. spring-context.xml dosyasına aşağıdaki bean tanımını ekleyin.
Bu bean tanımlamasını yaptıktan sonra artık konfigurasyon dosyamızda yer alan değişkenleri spring-context.xml dosyamızda ${degisken.adi} şeklide kullanabiliriz.
Bundan sonra veritabanı bağlantı bilgileri ile ilgili bir değişiklik söz konusu olduğunda, uygulamamızda herhangi bir değişiklik yapmamıza gerek kalmayacak. database.properties dosyasını güncellememiz yeterli olacaktır.
Kamil Örs
Software Developer
Bu işlemin Spring framework kullanılarak nasıl yapılacağına bakalım. Spring de bu işlem için PropertyPlaceholderConfigurer isimli sınıftan yararlanacağız. Bu yazıda hibernate konfigurasyon bilgilerini dışarıdan okuyan bir örnek yapalım.
ilk etapda C:\droidpark\database.properties isminde bir dosya oluşturalım. Bu dosyayı oluşturduktan sonra en sevdiğimiz metin editörü notepad++ ile düzenleyelim ve aşağıdaki hibernate konfigurasyonlarını yazalım.
# Database Configuration #------------------------------------------------ jdbc.driverClassName=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/droidpark jdbc.username=droidpark jdbc.password=droidpark hibernate.dialect=org.hibernate.dialect.MySQLDialect hibernate.connection.characterEncoding=UTF-8 hibernate.show_sql=true hibernate.format_sql=true hibernate.hbm2dll.auto=update
Değişiklikleri kaydettikten sonra. Application Server'ı çalıştırmadan önce -Dcom.droidpark.databaseConfigFile="C:\droidpark\database.properties" şeklinde bir JVM parametresini run configurasyon'una ekliyoruz.
Bu eklemelerden sonra sıra geldi spring içerisinden bu dosyayı okuyalım ve değişkenleri gerekli yerlerde kullanalım. spring-context.xml dosyasına aşağıdaki bean tanımını ekleyin.
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location" value="file:${com.droidpark.databaseConfigFile}"/>
<property name="ignoreUnresolvablePlaceholders" value="true"/>
</bean>
Bu bean tanımlamasını yaptıktan sonra artık konfigurasyon dosyamızda yer alan değişkenleri spring-context.xml dosyamızda ${degisken.adi} şeklide kullanabiliriz.
<bean id="droidparkDataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
<property name="user" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
<property name="driverClass" value="${jdbc.driverClassName}"/>
<property name="jdbcUrl" value="${jdbc.url}"/>
</bean>
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="dataSource" ref="droidparkDataSource"/>
<property name="packagesToScan" value="com.droidpark.model"/>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">${hibernate.dialect}</prop>
<prop key="hibernate.show_sql">${hibernate.show_sql}</prop>
<prop key="hibernate.hbm2ddl.auto">${hibernate.hbm2dll.auto}</prop>
<prop key="hibernate.format_sql">${hibernate.format_sql}</prop>
<prop key="hibernate.connection.characterEncoding">${hibernate.connection.characterEncoding}</prop>
</props>
</property>
</bean>
Bundan sonra veritabanı bağlantı bilgileri ile ilgili bir değişiklik söz konusu olduğunda, uygulamamızda herhangi bir değişiklik yapmamıza gerek kalmayacak. database.properties dosyasını güncellememiz yeterli olacaktır.
Kamil Örs
Software Developer


