Регистрация дополнительных сервлетов Spring Boot
У меня есть приложение Spring Boot Web MVC, которое находится в корне приложения. Я пытаюсь добавить в это приложение сторонний сервлет (коннектор CKFinder Java ).
Я добился этого с помощью следующего:
@Bean
public ServletRegistrationBean<CKFinderServlet> registerCkFinder() {
ServletRegistrationBean<CKFinderServlet> bean =
new ServletRegistrationBean<>(new CKFinderServlet(), "/ckfinder/*");
bean.setLoadOnStartup(-1);
bean.setInitParameters(
Map.of("scan-path", "<package name>"));
bean.setMultipartConfig(new MultipartConfigElement("/tmp/upload"));
return bean;
}
Основной веб-сайт продолжает работать правильно, но когда я пытаюсь нажать на сервлет CKFinder, я получаю серию ошибок, которые показывают проблемы инициализации при ошибках при попытке оценить
@Value(...)
параметры при автоматическом подключении моих перехватчиков и контроллеров (я не совсем понимаю, почему он создает контроллеры).
Проведя небольшое расследование, я понял, что это связано с контекстами приложений !? Я действительно хочу поделиться некоторой контекстной информацией (например, информацией о безопасности, зарегистрированным пользователем и т. Д.), Но в остальном мне действительно не нужны какие-либо другие качества Spring MVC при выполнении сервлета.
У меня тройной вопрос:
- Прав ли я, думая, что это связано с контекстом?
- Как мне зарегистрировать сервлет, чтобы он при вызове
@Value()
и другие вещи Spring оценивают правильно? ИЛИ - Как мне зарегистрировать сервлет в новом контексте, чтобы он не унаследовал и не попытался инициализировать все компоненты Spring MVC?
Я также подумываю обернуть сервлет оболочкой контроллера, но это кажется излишним для чего-то, что должно «просто работать».