Fai di Primavera sostituire segnaposto in diversi tipi di file (diverso file di configurazione di primavera)

StackOverflow https://stackoverflow.com/questions/3914971

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.

È stato utile?

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top