Что такое ServletWrappingController в контроллере пружины - PullRequest
1 голос
/ 19 августа 2011

Я пытаюсь узнать о ServletWrappingController в Spring.

мои вопросы

Как реализовать ServletWrappingController в приложении?

Должен ли этот класс ServletWrappingController расширяться в классе Controller

Пожалуйста, дайте мне знать.

Ответы [ 3 ]

3 голосов
/ 19 августа 2011

ServletWrappingController - это класс в Spring API - документация прямо здесь :

Реализация Spring Controller, которая оборачивает экземпляр сервлета, которым он управляет внутри. Такой упакованный сервлет не известен за пределами этого контроллера; весь его жизненный цикл описан здесь (в отличие от ServletForwardingController).

Полезно для вызова существующего сервлета через диспетчерскую инфраструктуру Spring, например, для применения Spring HandlerInterceptors к его запросам.

0 голосов
/ 20 января 2018

Вот пример того, как реализовать ServletWrappingController. В этом случае я упаковываю MetricsServlet Prometheus, но вы можете легко изменить это для любого существующего сервлета.

@Configuration
public class MetricsConfiguration {

    /**
     * Register the metricsController.
     * @return Returns the ServletWrappingController for the Prometheus
     * MetricsServlet.
     */
    @Bean
    public ServletWrappingController metricsController() throws Exception {
        ServletWrappingController controller = new ServletWrappingController();
        controller.setServletClass(MetricsServlet.class);
        controller.setBeanName("metricsController");
        controller.afterPropertiesSet();

        return controller;
    }

    /**
     * Map /metrics to the metricsController.
     * @return Returns the SimpleUrlHandlerMapping.
     */
    @Bean
    public SimpleUrlHandlerMapping metricsControllerMapping() {
        SimpleUrlHandlerMapping mapping = new SimpleUrlHandlerMapping();
        Properties urlProperties = new Properties();
        urlProperties.put("/metrics", "metricsController");
        mapping.setMappings(urlProperties);
        mapping.setOrder(Integer.MAX_VALUE - 2);

        return mapping;
    }

}

Если вы хотите сделать это с помощью XML вместо аннотаций, в есть примеры (как упомянуто @pap).

Здесь также есть некоторая полезная информация о том, как выполнить ее отображение здесь .

0 голосов
/ 19 августа 2011

Как вы можете прочитать из документации , ServletWrappingController - это контроллер, который упаковывает существующий стандартный Java-сервлет.

Основная причина, по-видимому, заключается в том, чтобы позволить разработчикам использовать функциональные возможности Spring (например, перехватчики обработчиков), в то же время используя другие технологии на основе сервлетов, такие как ваши собственные сервлеты или, как упоминалось в документе, инфраструктуру Struts.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...