2013-01-04 14 views
7

İç içe geçmiş yer tutucuları bir özellik dosyasından yüklemek mümkün mü? Dinamik olarak bir URL yüklemeye çalışıyorum.İç İçe Yer Tutulan Yer İşaretlerini Yaylı Özellikler Dosyasından Yükleme

Örneğin, benim özellikler dosyası zamanında {nestedProperty} değerlerini yüklemek üzere bir yolu var mı

my.url=http://localhost:8888/service/{nestedProperty}/ 

içeriyorsa? ResourceBundle'ın davranışına benzer. Eğer öyleyse, String'i etkili bir şekilde nasıl oluşturabilirim? Şimdiye kadar,

'u düşünüyorum ... ama hangi özelliklerin yuvalandığından emin değilim. Şu anda ben PropertyPlaceholderConfigurer inceledik ve diğer bazı özellikleri burada soruları dosyası

ctx.getBean("myURLString", String.class, new Object[] { nestedProperty}); 

çizgisinde bir şey olsa ben, Ek Açıklamalar mümkünse kullanarak bir fasulye almak istiyorum ama görünmüyor Bunun mümkün olup olmadığını anlamak için.

Ben de benim kodu içinde dinamik bu iç içe özelliği yüklemek istediklerini belirtebilir ya da en azından oradan işlemek gerekir

cevap

9

Evet bu mümkün (muhtemelen @PostConstruct aracılığıyla?):

my.url=http://localhost:8888/service/${nestedProperty} 
nestedProperty=foo/bar/baz 

Örneğinizdeki parantezlerin önüne dolar işareti ekleyin ve siz ayarlayın! Bir Bahar fasulye

@Value("${my.url}") 
private String url; 

:

aslında tam olarak çözümlenmiş özelliğini kullanmak için bunu.

+0

Bu özelliği açıkça benim fasulye tanımımda tanımlamanız gerekmiyor mu? – lase

+0

'nestedProperty', bu ismin mülkiyetini belirtir - örneğin ikinci satırı - bir fasulye değil. Yay, tüm yapılandırılmış dosyalardaki tüm özellikleri yükler ve birbirlerine karşı çözümler. Dairesel referanslardan kaçındığınız sürece iyisiniz. –

+0

Bu, iç içe geçmiş özelliklerini 'nestedProperty' özellik dosya değerini kullanmak yerine ctx.getBean() çağrısından dinamik olarak belirtmeme izin veriyor mu? – lase