Ответ 1
Какова цель spring.handlers и spring.schemas?
ну вы более или менее нашли это сами, добавьте еще несколько деталей:
некоторые библиотеки spring содержат spring.schemas и файл spring.handlers внутри каталога META-INF
META-INF/ spring.schemas
- re-maps (*) схемация к xsd внутри библиотеки
- (абстрактно), только эта переименованная версия поддерживается этой библиотекой
META-INF/ spring.handlers
- предоставляет классы обработчиков пространства имен для определенных пространств имен
- класс обработчика пространства имен обеспечивает логику синтаксического анализа для анализа spring -batch beans, как работа, шаг и т.д.
(*) фактическое повторное сопоставление происходит во время сборки контекста приложения spring
При каких обстоятельствах я должен иметь эти два файла под Папка META-INF?
обычно файлы находятся внутри используемых вами библиотек spring, но вы можете использовать механизм для реализации собственного пространства имен bean, тогда у вас будут собственные файлы
В моем другом вопросе, связанном выше, кто-нибудь знает, почему мне пришлось добавить плагин maven-shade для создания этих двух файлов (на основе всех моих зависимостей) в рамках META-INF? Другими словами, какова была КОРНЕЖНАЯ ПРИЧИНА что заставило меня использовать плагин maven shade?
если вы используете пространство имен spring в конфигурации spring, вам нужны соответствующие файлы
проблема возникает, когда вы хотите запустить Java-приложение:
- с основным классом
- Библиотеки spring должны находиться в пути к классам
- или все объединяется в одну банку, которая должна находиться в пути к классам (*)
- как приложение для сервера war/ear, spring libaries должны быть на пути к классам, обычно внутри войны
Я предполагаю, что вы не запустили основной класс с полным пулом классов, и я обновил свой ответ для вашего первого вопроса.
(*), если вы объедините все в одну банку, вы должны убедиться, что содержимое всех файлов spring.schemas/spring.handlers объединено в один spring.schemas и один spring.handlers, см. этот ответ для конфигурации с maven для создания all-in-one.jar