Как сделать класс доступным для Spring в Tomcat? - PullRequest
0 голосов
/ 01 апреля 2019

Я работаю с приложением, которое имеет модульную архитектуру - каждый модуль содержится в файле WAR, работающем поверх Tomcat. Один из модулей позволяет пользователям расширять свои функциональные возможности с помощью интерфейса запроса Interceptor, который * Spring в классе @Autowire. Spring.

Я работаю над пользовательским Interceptor и хотел бы сделать его доступным для Spring для автоматического подключения внутри модуля. До сих пор я создавал пользовательскую версию WAR модуля, которая содержит мой перехватчик, но я не чувствую, что это чистый подход, потому что идея состояла в том, чтобы сделать приложение легко расширяемым, и по этой причине кажется, что я строю свой собственный форк. практически исключить преимущества интерфейса Interceptor.

Я знаю, что одна возможность - открыть WAR (это просто ZIP-архив) и вставить туда свой JAR, но это тоже не совсем правильно. Возможно, есть способ добавления пользовательских JAR-файлов с помощью Maven? Есть ли стандартный способ сделать это?

1 Ответ

0 голосов
/ 12 апреля 2019

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

Существует полезная документация страница о загрузке классов в Tomcat . Он описывает, откуда загружаются классы, фрагменты, которые наиболее интересны для обычного читателя, приведены ниже:

распакованные классы и ресурсы в $CATALINA_BASE/lib
JAR-файлы в $CATALINA_BASE/lib
распакованные классы и ресурсы в $CATALINA_HOME/lib
JAR-файлы в $CATALINA_HOME/lib

WebappX - Загрузчик классов создается для каждого веб-приложения, развертываемого в одном экземпляре Tomcat. Все распакованные классы и ресурсы в каталоге /WEB-INF/classes вашего веб-приложения, а также классы и ресурсы в файлах JAR в каталоге /WEB-INF/lib вашего веб-приложения становятся видимыми для этого веб-приложения, но не для других.

...