Нужно понимание spring.handlers и spring.schemas - PullRequest
15 голосов
/ 23 декабря 2011

У меня есть несколько вопросов, связанных с проблемой, которую я уже решил с помощью этого другого вопроса . Тем не менее, я все еще задаюсь вопросом о коренной причине. Мои вопросы следующие:

  1. Какова цель spring.handlers и spring.schemas ?

Как я понимаю, это способ сообщить Spring Framework, где найти xsd, чтобы все было правильно подключено и загружено. Но ... * * 1013

  1. При каких обстоятельствах я должен иметь эти два файла в папке META-INF ?

  2. В моем другом вопросе, связанном выше, кто-нибудь знает, почему мне пришлось добавить maven-shade-plugin для создания этих двух файлов (на основе всех моих зависимостей) в META-INF? Другими словами, что за коренная причина заставила меня использовать плагин maven shade?

1 Ответ

26 голосов
/ 28 декабря 2011

Какова цель spring.handlers и spring.schemas?

ну, вы более или менее узнали это сами, давайте добавим еще несколько деталей:

некоторые библиотеки Spring содержат spring.schemas и файл spring.handlers внутри каталога META-INF

META-INF / spring.schemas

  • повторное сопоставление (*) схемы расположения с xsd внутри библиотеки
  • (аннотация) только переотображенные версии поддерживаются этой библиотекой

META-INF / spring.handlers

  • предоставляет классы обработчиков пространства имен для определенных пространств имен
  • класс обработчика пространства имен обеспечивает логику синтаксического анализатора для анализа bean-компонентов spring-batch, например задание , step и т. д.

(*) фактическое переопределение происходит во время сборки контекста приложения Spring


При каких обстоятельствах я должен иметь эти два файла в папке META-INF?

илиВ большинстве случаев файлы находятся внутри используемых вами библиотек Jar библиотеки Spring, но вы можете использовать механизм для реализации собственного анализа бина пространства имен, тогда у вас будут собственные файлы


В моем другом вопросе, связанном выше,кто-нибудь знает, почему мне пришлось добавить плагин maven-shade-plugin для создания этих двух файлов (на основе всех моих зависимостей) в META-INF?Другими словами, что за коренная причина заставила меня использовать плагин maven shade?

если вы используете пространство имен пружины в конфигурации пружины, вам нужны соответствующие файлы

проблема возникает, когда вы хотите запустить Java-приложение:

  • с основным классом либо
    • библиотеки пружин должны быть в classpath
    • или всеобъединяется в один jar-файл, который должен находиться в classpath (*)
  • как серверное приложение war / ear, весенние библиотеки должны находиться в classpath, обычно внутри войны

Я полагаю, вы не запустили основной класс с полным путем к классам, и я обновил свой ответ и для вашего первого вопроса тоже

(*), если вы объедините все водин jar, вы должны убедиться, что содержимое всех файлов spring.schemas / spring.handlers объединено в один файл spring.schemas и один файл spring.handlers, см. этот ответ для конфигурации с maven для созданиявсе-в-one.jar

...