2010-08-31 15 views
10

yapılandırma için yol göreli kullanarak dosya. Bu Haliyle, özellikleri dosyasının konumu sunucu sürecinin geçerli çalışma dizini göredirReferans Bahar özellikleri Ayrı özellikler dosyaya benim Bahar yapılandırma dosyasında içinden özelliklerini taşınacağım dosyayı

<bean class="org.springframework.beans.factory.config.PropertyPlaceHolderConfigurer"> 
    <property name="location" value="file:properties/${CONFIG_MODE}/service.properties" /> 
</bean> 

ile yapılandırma dosyasında yer almaktadır.

Bu, işlemin belirli bir çalışma dizininden başlatılması gerekliliğini yaratır ve daha da kötüsü, tamamen farklı bir özellik dosyası alabilmesi olasılığını (örneğin, uzak) olanaklı kılar. Çalışma dizini, hizmetin eski bir sürümüne ayarlanmış.

yapılandırma dosyasını içeren dizine göre yolunu kullanarak özellik dosyasına başvurmak istiyorum.

FileSystemResource görüntülendiğinde, ihtiyacım olan şey createRelative olabilir, ancak yapılandırma dosyasında nasıl kullanılacağını anlayamıyorum. Ben bir yolunu bilmiyorum

sayesinde

Steve

cevap

10

bunu yapmaya.

Ne yapabilirsiniz, ancak, özellikleri sınıfyolundan dosyasını yüklemek geçerli:

<bean class="org.springframework.beans.factory.config.PropertyPlaceHolderConfigurer"> 
    <property name="location" value="classpath:path/to/service.properties" /> 
</bean> 

özellikleriniz dosyanın sınıf yolu konumu çok daha öngörülebilir bir durum olduğunu ve sürece çalışacağız senin sınıf yolu düzgün ayarlanmış. İsterseniz

+0

Güzel çözüm - teşekkürler. Tek sorun (ve bu durumun ciddi bir sorun olmadığını kabul ediyorum) bazen özellik dosyasını doğrudan görüntüleyebilmemizin/düzenlemenin yararlı olacağıdır - örneğin acil durumlarda veya hızlı test yapmak için. Kavanozun içine girmesi bunu engellemez, ama biraz hantal hale getirir. – stevec

+2

@stevec: Bir JAR dosyasının içinde olması gerekmiyor, dosya yolunda olduğu gibi bir dosya sistemi dizininde de olabiliyor. – skaffman

+0

Bu, @Value ("$ {thing.inside.service.properties}") 'kullandığımda çalışır mı? –

9

3.1 kullanarak, sınıf yolunda kapalı dosyaları tutabilir. Aşağıdaki fasulye tanımı ile

,

<bean class= 
    "org.springframework.beans.factory.config.PropertyPlaceHolderConfigurer"> 
    <property name="location" 
    value="file:${props.path}/service.properties" /> 
</bean> 

Eğer config.properties yerleştirdik Supposing java komut satırı

java ... -Dprops.path=path/to/where/it/is 
0

kullanarak bir özelliği ayarlayabilirsiniz Sonra WEB-INF içine dosyası:

<bean id="propertyConfigurerInternal" 
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> 
<property name="location"> 
    <value>classpath:../config.properties</value> 
</property>