Fai di Primavera sostituire segnaposto in diversi tipi di file (diverso file di configurazione di primavera)
-
29-09-2019 - |
Domanda
C'è un modo per rendere primavera (v.3.0) segnaposto parse in file che non sono .properties
?
So che posso scrivere il mio PropertyPlaceholderConfigurer
ma stavo cercando un modo "pulito" per farlo.
Modifica
Per essere più precisi, quello che in realtà voglio fare è quello di sostituire i segnaposto presenti nei file .sql
. Così i valori dei segnaposto sono memorizzati in .properties
ma i segnaposto sono utilizzati in file .sql
.
Soluzione
Un chicco PropertyPlaceholderConfigurer
sostituirà segnaposto in altre definizioni di fagioli. In particolare, aggiorna i valori delle proprietà di fagioli nelle definizioni di fagioli ... prima che i fagioli sono effettivamente creati. Pertanto, se si voleva utilizzare PropertyPlaceholderConfigurer
per modificare SQL, SQL che avrebbe bisogno di essere incorporato in valori immobiliari di fagioli. Questa classe non può sostituire immobili a file arbitrari.
Se si desidera sostituire i segnaposto nel file arbitrari, il class PropertyPlaceholderHelper
è una scommessa migliore. Ad esempio, il metodo
String replacePlaceholders(String value, Properties properties)
sostituirà i segnaposto in value
con proprietà tratti dal properties
ritorno stringa riscritto. Si potrebbe facilmente adattarsi / avvolgere questo per sostituire segnaposto in un file.
Altri suggerimenti
PropertyPlaceholderConfigurer
può essere fornito con un oggetto Properties
arbitrario (via struttura properties
).
Non so se si utilizza Maven, ma se lo fai, userei risorsa filtraggio per iniettare le proprietà nelle file SQL in fase di deploy (ci sono soluzioni simili per formica, anche) e lasciare che l'uso PropertyPlaceholderConfigurer
della primavera gli stessi file di proprietà in fase di esecuzione. In questo modo tutto è al suo posto (dopo tutto, il posto migliore per le proprietà è un file .properties).