2012-11-08 10 views
6

Ho un file delle proprietà definito nel mio xml:C'è un modo per avere if/else condizioni in un XML in primavera mvc3?

<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> 
    <property name="location" value="/WEB-INF/db.properties"></property>  
</bean> 

ho una proprietà nel file:

someprop = one 

Domanda

Nel mio XML vorrei neanche aggiungere/rimuove una proprietà in una definizione di bean. Ad esempio:

<bean id="dataSource" destroy-method="close" class="org.apache.commons.dbcp.BasicDataSource"> 
    <property name="driverClassName" value="${jdbc.driverClassName}" /> 
    <property name="url" value="${jdbc.internal.url}" /> 
    <!--I want to add/remove the line below based on value in property file--> 
    <property name="username" value="${jdbc.internal.username}" /> 
</bean> 
+1

Potrebbe suggerire di avere file di proprietà diversi per ambienti diversi. Questo è il modo "standard" per risolvere questo. – pap

+0

che potrebbe funzionare anche. Tuttavia, sono confuso su come sarà determinato quale viene prelevato? Devo configurare un nome di ambiente in tomcat? C'è un collegamento che va in profondità? – birdy

+0

In ogni caso, poiché questo è XML e non il file delle proprietà. Dovrò ancora cambiare il file xml quando si distribuisce da un env all'altro. – birdy

risposta

4

Questo potrebbe essere possibile utilizzando SpringEL. Leggere il supporto di espressione per definire le definizioni di bean sezione here.

Se per gestire più ambienti, Spring 3.1 fornisce le astrazioni bean definition profiles e Environment.

+0

Non ho trovato questa risposta nei link che hai suggerito. Come si innesca il profilo? Diciamo che ho due profili, dove ne faccio uno attivo – birdy

+0

@birdy il profilo attivo può essere impostato in più modi. Vedi questo post per maggiori informazioni http://stackoverflow.com/questions/8587489/how-to-set-active-spring-3-1-environment-profile-via-a-properites-file-and-not-v –

Problemi correlati