Spring 在同一应用程序中使用 RestController 和 ServletRegistrationBean 启动

Spring Boot using RestController and ServletRegistrationBean in same application

我有一个带有 @RestController 注释的控制器 class,其中包含 class 方法上的 @ReguestMapping 注释以识别端点。

我需要添加一个 SpeechletServlet(Alexa-skill-kit 的一部分)以在端点 /zebra-tape 处接收请求,同时其他端点仍然可用。

使用下面的代码我失去了对用 @RequestMapping

注释的端点的访问
public class Application extends SpringBootServletInitializer {

    @Bean
    public ServletRegistrationBean dispatcherServletRegistration() {
        ServletRegistrationBean registration = new ServletRegistrationBean(new ZebraTapeServlet());
        registration.addUrlMappings("/zebra-tape");
        return registration;
    }
}

我怎样才能访问这两种类型的端点?

将您的 bean 方法重命名为 dispatcherServletRegistration 以外的名称。 Spring Boot 使用该名称作为自动配置的调度程序 servlet 的注册 bean。通过声明一个具有相同名称的 bean 方法,您将关闭该自动配置。