Haga primavera reemplazar los marcadores de posición en diferentes tipos de archivos (que no sea configuraciones de primavera)
-
29-09-2019 - |
Pregunta
¿Hay una manera de hacer de resorte (v.3.0) marcadores de posición de análisis sintáctico de archivos que no son .properties
?
Sé que puedo escribir mi propio PropertyPlaceholderConfigurer
pero yo estaba buscando una manera más "limpia" para hacerlo.
EDIT:
Para ser más específicos, lo que realmente quiero hacer es reemplazar los marcadores de posición presentes en archivos .sql
. Por lo que los valores de los marcadores de posición se almacenan en .properties
pero los marcadores de posición se utilizan en los archivos .sql
.
Solución
Un grano PropertyPlaceholderConfigurer
reemplazará marcadores de posición en otras definiciones de frijol. En concreto, se actualizan los valores de las propiedades del bean en las definiciones de frijol ... antes de que los granos se crea realmente. Por lo tanto, si desea utilizar PropertyPlaceholderConfigurer
modificar SQL, tendría que ser incorporado en los valores de propiedad de frijol de que SQL. Esta clase no puede reemplazar propiedades en archivos arbitrarios.
Si desea reemplazar los marcadores de posición en archivos arbitrarios, la clase PropertyPlaceholderHelper
es una mejor apuesta. Por ejemplo, el método
String replacePlaceholders(String value, Properties properties)
reemplazará los marcadores de posición en value
con propiedades tomadas de properties
que vuelven la cadena reescrita. Desde aquí se puede adaptar / envolver esta opción para sustituir los marcadores de posición en un archivo.
Otros consejos
PropertyPlaceholderConfigurer
puede ser suministrado con un objeto Properties
arbitrario (a través de la propiedad properties
).
No sé si se utiliza Maven, pero si lo hace, yo usaría recursos filtrado para inyectar las propiedades en los archivos SQL en el momento del despliegue (existen soluciones similares para las hormigas, también) y dejar que PropertyPlaceholderConfigurer
uso de la primavera los mismos archivos de propiedades en tiempo de ejecución. De esta manera todo está donde debe estar (después de todo, el mejor lugar para las propiedades es un archivo .properties).