2010-02-21 12 views
7

onun kurucu bağımsız olarak ilkel değerler alır Spring 3, ek açıklama göre konfigürasyonu olan bir sınıf yapılandırmak için çalışıyorum:Yay: açıklama göre yapılandırma ile ilkel değerler (özelliklerini) yapıcı enjeksiyon

@Component 
class MyBean { 
    MyBean(String arg1, String arg2) { 
    // ... 
    } 
} 

ve böyle bir uygulama bağlam:

<beans [...]> 
    <context:component-scan base-package="com.example" /> 
    <context:property-override location="/WEB-INF/example.properties" /> 
</beans> 

Ben kurucu bağımsız değişkeni özellikleri dosyadan alınması gerektiğini belirtmek için bir yol bulmaya çalışıyorum. Görünüşe göre bu normal fasulye (örneğin, MyClass(Bean bean1, OtherBean bean2)), ancak sadece özellikleri alan kurucular ile çalışır?

Ayrıca, Spring 3'ün @Value ek açıklaması ve @Value("#{prop.Prop1}") arg1 gibi bir değer için EL ifadesiyle kurucu argümanlarını açıklamayı denedim, ancak bu da işe yaramıyor gibi görünüyor.

cevap

16

Aşağıdaki kod <context:property-placeholder .../> ile çalışıyor:

@Component 
public class MyBean { 
    @Autowired 
    public MyBean(@Value("${prop1}") String arg1, @Value("${prop2}") String arg2) { 
     // ... 
    } 
} 

Ama <context:property-override .../>, çok özel bir şeydir burada uygun değil.

+0

Özellik dosyası "myBean.prop1 = foo" veya sadece "prop1 = foo" olacak mı? Yani, fasulyenin adıyla belirlenen özellikler mi? –

+0

Özellik dosyası 'prop1 = foo' olacaktır. 'MyBean.prop1 = foo''ya ihtiyacınız varsa,' @Value ("$ {myBean.prop1}") 'yazın. Bu, 'ın çalışma şeklidir. – axtavt