2016-05-10 29 views
11

Tek bir sınıftan, her biri bir özellik dosyasında önceden belirlenmiş özelliklere dayalı olarak geçerli uygulama bağlamında örneklenecek bir dizi fasulye oluşturmak istiyorum. Neyi başarmaya çalıştığımın bir örneğini verdim. Bunu, aşırı kod olmaksızın nasıl yapılacağına dair herhangi bir ipucu (örneğin, çoklu sınıflar, karmaşık fabrikalar vb. Olmadan) takdir edilecektir.Geçerli ELÇA'da geçerli fasulyenin bir özelliğine başvurma

XML yapılandırma:

<bean id="bean1" class="Mybean"> 
    <property name="prefix" value="bean1"/> 
</bean> 

<bean id="bean2" class="Mybean"> 
    <property name="prefix" value="bean2"/> 
</bean> 

<bean id="bean3" class="Mybean"> 
    <property name="prefix" value="bean3"/> 
</bean> 

Özellikler Dosya:

bean1.name=alfred 
bean2.name=bobby 
bean3.name=charlie 

Sınıf:

class Mybean { 
    @Value("${#{prefix}.name}") 
    String name; 
} 

Ana Sınıfı:

public class Main { 
    @Autowired 
    List<MyBean> mybeans; 
} 

cevap

2

Sen (yerine onun öneki depolama) doğrudan fasulye adını ayarlamak için PropertyPlaceholderConfigurer kullanabilirsiniz:

<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> 
    <property name="location" value="app.properties"/> 
</bean> 

<bean id="bean1" class="Mybean"> 
    <property name="name" value="${bean1.name}"/> 
</bean> 

<bean id="bean2" class="Mybean"> 
    <property name="name" value="${bean2.name}"/> 
</bean> 

<bean id="bean3" class="Mybean"> 
    <property name="name" value="${bean3.name}"/> 
</bean> 
+0

Bana bir @value ek açıklamada İlkbahar EL sonuçlanan özelliğe başvurmak istiyorum nasıl bir örnek verebilir misiniz? – ironchefpython

+0

Sanırım onu ​​burada bulabilirsiniz (https://stackoverflow.com/questions/2041558/how-does-spring-3-expression-language-interact-with-property-placeholders?rq=1) –

+0

Spring özelliği yer tutucu fasulyedeki veri referansı. Yapılandırılan * bean * üzerinde tanımlanan özelliklerin nasıl referans gösterileceğini açıklamıyor. – ironchefpython