2011-03-11 15 views
27

dan @ değeri ek açıklama değerlendirmez, kullanıyorum:Yay 3.0.5 <em>Spring 3.0.5.RELEASE</em> bir fasulye için otomatik kablo özelliklerine çalışmak özellikleri

  • config.properties:

    username=myusername 
    
  • main-components.xml:

    <context:property-placeholder location="classpath:config.properties" /> 
    
  • sınıfının: Sonuç olarak

    @Service 
    public class MyClass { 
    
        @Value("${username}") 
        private String username; 
        ... 
    } 
    

, kullanıcı adı anlamıyla"${username}" ayarlı alır, bu yüzden ifade ayrıştırılır almaz. Bu sınıftaki diğer otomatik kablolu bağımlılıklarım ayarlanıyor ve Spring herhangi bir istisna alamıyor. Ayrıca @Autowired'u eklemeyi denedim ama yardımcı olmadı.

Ben ayrı fasulye için özelliklerini ayrıştırmak ve sonra @Autowired + @Qualifier kullanırsanız, çalışır:

<bean id="username" class="java.lang.String"> 
    <constructor-arg value="${username}"/> 
</bean> 

herhangi bir fikir nasıl sadece @Value kullanılır? Belki de sahip olmadığım bazı Spring bağımlılıklarını eklemem gerekiyor? Teşekkürler.

+16

'MyClass 'fasulyenizle aynı uygulama bağlamında' '(ana içerikte değil) olduğundan emin misiniz? – axtavt

+0

Haklısınız. ContextLoaderListener tarafından tanımlanan içeriğe öğesini sunucu içeriğine taşıdım. Şimdi değerlerim ayrıştırıldı. Çok teşekkürler! –

+1

Burada yapmak için oldukça yararlı bir şey, göz ardı edilemez yer tutucuları yanlış olarak ayarlamaktır - bu nedenle, yer tutucularını çözemezse uygulama başarısız olur - bu, sorunun ne olduğunu –

cevap

18

Sorun nedir? Yorumları kopyalayın/yapıştırın:

MyClass Bean'inizle aynı uygulama bağlamında (ana içerikte değil) <context:property-placeholder> olduğundan emin misiniz? - axtavt

Haklısınız. ContextLoaderListener tarafından tanımlanan bağlamdan, sunucu içeriğine <context:property-placeholder> taşındı. Şimdi değerlerim ayrıştırıldı. Çok teşekkürler! - alex

İlgili konular