2012-10-31 17 views
5

voglio scappare il mio file propeties primavera al fine di ottenere nella mia proprietà di fagioli: ${ROOTPATH}/relativePathFuga di riferimento immobili in file di proprietà primavera

Ho un semplice file di configurazione primavera che contiene:

<context:property-placeholder location="classpath:myprops.properties" /> 

<bean id="myBean" class="spring.MyBean"> 
    <property name="myProperty" value="${myproperty}" /> 
</bean> 

Il myprops.properties contiene:

myproperty=\${ROOTPATH}/relativePath 

La configurazione precedente restituisce: Impossibile risolvere segnaposto 'ROOTPATH'. Ho provato un sacco di possibili sintassi ma non sono riuscito a trovare quello giusto.

+0

Un anno senza commenti. Hai risolto questo problema? –

risposta

7

Invece di ${myproperty} utilizzare #{'$'}{myproperty}. Basta sostituire $ con #{'$'}.

+0

Sarebbe utile spiegare perché questo funziona. –

+0

No, non funzionerà. Risulterà come '$ {myproperty}' iniettato in myBean.myProperty letteralmente invece di '$ {ROOTPATH}/relativePath'. – coolersport

+0

Dipende cosa vorresti ottenere. Immagino tu debba metterlo letteralmente come valore per myProperty. Se si desidera risolvere ROOTPATH ​​da qualche parte, ad es. proprietà di sistema è possibile utilizzare Spring Expression Language SpEl. Ad esempio qualcosa come questo: '# {systemProperties ['ROOTPATH']}/relativePath' – user2428804

1

sembra così lontano, che è un modo per sfuggire alla ${}, ma si può provare di seguito la configurazione di risolvere il problema

dollar=$ 

myproperty=${dollar}{myproperty} 

Risultato per MyProperty sarà ${myproperty} dopo la valutazione.

1

Here è un biglietto di primavera che richiede il supporto di escape (ancora non risolto al momento della scrittura).

La soluzione di utilizzare

$=$ 
myproperty=${$}{ROOTPATH}/relativePath 

non fornire una soluzione, ma sembra piuttosto sporca.

L'utilizzo di espressioni SPEL come #{'$'} non ha funzionato con Spring Boot 1.5.7.

Problemi correlati