Estoy trabajando en un proyecto con varios módulos separados, cada uno con sus propios archivos de propiedades de contexto de la aplicación. Quiero poder cargar todas estas propiedades para que Spring pueda usarlas para la resolución del marcador de posición.Archivos de propiedades múltiples en Spring 3.0
preguntas anteriores han mencionado esto y hay una buena entrada en el blog here que describe cómo utilizar un PropertyPlaceholderConfigurer en cada contexto, ordenarlas por prioridad y establece ignoreUnresolveablePlaceholders a true para que estos archivos de propiedades puede hacer una referencia cruzada entre sí sin soplar arriba.
Sin embargo, esto no resuelve mi problema ya que también quiero poder usar las propiedades que estoy cargando para alguna resolución de marcador de posición personalizada (de algunos archivos yaml que estoy analizando). Esto requiere el uso de un PropertyPlaceholderHelper, que requiere el objeto Properties como argumento.
Por lo que yo puedo decir, las posibles soluciones son:
1) archivo de combinación de todas las propiedades en un solo grano de propiedades. Esto puede ser usado para crear un PropertyPlaceholderConfigurer (para la resolución de marcador de posición interna de primavera) y se utiliza con un PropertyPlaceholderHelper (por mi propia resolución marcador de posición)
2) De alguna manera configurar un PropertyPlaceholderHelper utilizar el conjunto de propiedades, así como su disposición jerárquica, mantenida por PropertyPlaceholderConfigurers si continúo y sigo los consejos de esa publicación de blog.
Lamentablemente no puedo encontrar la forma de hacer cualquiera de estos. ¡Cualquier ayuda sería muy apreciada!
PD Parece que Spring 3.1 será de gran ayuda aquí ... lamentablemente todavía no estamos listos para pasar a eso, ¡así que todavía necesito una solución para superarme!
**** **** EDITAR
Gracias por las respuestas hasta el momento. Son buenas respuestas, pero desafortunadamente no me ayudarán porque (y me disculpo por no mencionar esto antes) estamos actualmente en el proceso de separar los módulos centrales de nuestro proyecto de los módulos no básicos. Esto significa que los módulos centrales y su contexto de aplicación no pueden codificar los nombres de los archivos de propiedades. Frustrante, el escaneo classpath de Spring parece estar roto, por lo que los comodines del tipo "classpath *: *. Properties" solo funcionan cuando se crean los módulos individuales, no el proyecto de nivel superior (creo que este es un problema conocido).
La pregunta es cómo fusionar los archivos de propiedades definidos en módulos no centrales en archivos de propiedades existentes definidos en módulos centrales. Por el momento estoy trabajando con un BeanPostProcessor. ¿Me pregunto si existe una forma más simple/más elegante de hacerlo?
Gracias
Creo que debe proporcionar al menos un segmento dir constante, por lo que 'classpath *: *. Properties' no funcionará, pero' classpath *: config/*. Properties' lo hará. – mrembisz