2011-12-22 11 views
12

Tengo algunas preguntas derivadas de un problema que ya he resuelto a través de this other question. Sin embargo, todavía me estoy preguntando sobre la causa raíz. Mis preguntas son las siguientes:Necesito comprensión de spring.handlers y spring.schemas

  1. ¿Cuál es el propósito de spring.handlers y spring.schemas?

Como entiendo que es una forma de contar la Spring Framework dónde localizar el xsd para que todo está conectado y se carga correctamente. Pero ...

  1. ¿En qué circunstancias debería tener esos dos archivos bajo la carpeta META-INF ?

  2. En mi otra pregunta vinculada anteriormente, ¿alguien sabe por qué tuve que agregar el maven-shade-plugin para crear esos dos archivos (basados ​​en todas mis dependencias) bajo META-INF? En otras palabras, ¿cuál fue la CAUSA RAÍZ que me hizo usar el plugin maven shade?

Respuesta

21

¿Cuál es el propósito de spring.handlers y spring.schemas?

así que más o menos lo descubrió por sí mismo, vamos a añadir algunos detalles más:

algunas bibliotecas de primavera contienen una spring.schemas and a spring.handlers file dentro de un directorio META-INF

META-INF/primavera. esquemas

  • re-mapas (*) schemaLocation a un xsd dentro de la biblioteca
  • (resumen) sólo versiones re-mapeados son compatibles con esta biblioteca

META-INF/spring.handlers

  • proporciona clases de controlador de espacio de nombres de espacios de nombres específicos
  • la clase de controlador proporciona espacio de nombres la lógica analizador para analizar los granos de primavera-lotes, como trabajo, paso, etc.

(*) la re-mapeo real ocurre durante la construcción del contexto de aplicación de primavera


¿En qué circunstancias debería tener esos dos archivos en la carpeta META-INF ?

normalmente los archivos se encuentran dentro de los frascos de la biblioteca de primavera que utiliza, pero se puede utilizar el mecanismo para poner en práctica propia de análisis de frijol espacio de nombres, entonces tendría archivos propios


En mi otra pregunta vinculado arriba, ¿alguien sabe por qué tuve que agregar el maven-shade-plugin para crear esos dos archivos (basado en todas mis dependencias ) bajo META-INF? En otras palabras, ¿cuál fue la CAUSA RAÍZ que me obligó a usar el plugin maven shade?

si utiliza un espacio de nombres de primavera en la configuración de la primavera, necesita los archivos correspondientes

el problema surge cuando se desea ejecutar una aplicación Java:

  • con una clase principal, ya sea
    • las bibliotecas de muelles deben estar en la ruta de clase
    • o todas se fusionan en una jar, que tiene que b e en la ruta de clase (*)
  • como aplicación de servidor de guerra/del oído, las librerias de primavera tienen que estar en la ruta de clase, normalmente dentro de la guerra

supongo que no inicia el MainClass con el complete classpath y actualicé mi answer para su primera pregunta también

(*) si fusiona todo en un solo contenedor, debe asegurarse de que el contenido de todos los archivos spring.schemas/spring.handlers se fusionen en uno solo archivo spring.schemas y un archivo spring.handlers, consulte este answer for a configuration with maven to create an all-in-one.jar

+0

Muchas gracias, esto es lo que estaba buscando. – Viriato