2016-05-10 23 views
11

Vorrei creare un numero di bean da una singola classe, tutto da istanziare nel contesto dell'applicazione corrente, ciascuno basato su proprietà prefissate in un file di proprietà. Ho dato un esempio di ciò che sto cercando di ottenere. Sarebbe gradito qualsiasi suggerimento su come fare questo senza un codice eccessivo (ad esempio senza classi multiple, fabbriche complicate, ecc.).Riferimento a una proprietà del bean corrente in primavera EL

configurazione

XML:

<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> 

Proprietà del file:

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

Classe:

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

principale Classe:

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

risposta

2

puo essere PropertyPlaceholderConfigurer per impostare il nome del bean direttamente (invece di memorizzare il suo prefisso):

<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

Mi potete dare un esempio di come si sarebbe riferimento alla proprietà con conseguente primavera EL in un'annotazione @Value? – ironchefpython

+0

Penso che lo trovi [qui] (https://stackoverflow.com/questions/2041558/how-does-spring-3-expression-language-interact-with-property-placeholders?rq=1) –

+0

Questo spiega come per fare riferimento ai dati nel bean segnaposto della proprietà Spring. Non spiega come fare riferimento alle proprietà definite sul bean * in fase di configurazione. – ironchefpython

Problemi correlati