Регистрация дополнительных сервлетов 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 при выполнении сервлета.

У меня тройной вопрос:

  1. Прав ли я, думая, что это связано с контекстом?
  2. Как мне зарегистрировать сервлет, чтобы он при вызове @Value()и другие вещи Spring оценивают правильно? ИЛИ
  3. Как мне зарегистрировать сервлет в новом контексте, чтобы он не унаследовал и не попытался инициализировать все компоненты Spring MVC?

Я также подумываю обернуть сервлет оболочкой контроллера, но это кажется излишним для чего-то, что должно «просто работать».

0 ответов

Другие вопросы по тегам