如何在SpringBoot上禁用DispatcherServlet,即使尝试通过servlet注册禁用它,也会在日志中显示uri映射:
-setKeepAliveTimeout:handler:
LOG
@Bean
public ServletRegistrationBean servletRegistrationBean(final DispatcherServlet dispatcherServlet) {
final ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(dispatcherServlet);
servletRegistrationBean.setEnabled(false);
return servletRegistrationBean;
}
感谢任何帮助!
答案 0 :(得分:13)
我将下面的代码添加到我的主类中,并且从日志中删除了servlet。
@SpringBootApplication(exclude = { DispatcherServletAutoConfiguration.class })
答案 1 :(得分:6)
来自Spring引导文档here
Spring Boot希望从应用程序的根目录
/
向下提供所有内容。如果您希望将自己的servlet映射到该URL,则可以执行此操作,但当然您可能会丢失其他一些Boot MVC功能。要添加自己的servlet并将其映射到根资源,只需声明类型为@Bean
的{{1}}并为其指定特殊的bean名称Servlet
(您还可以创建不同类型的bean)使用该名称,如果你想关闭它而不是替换它。)
答案 2 :(得分:0)
如果您排除DispatcherServletAutoConfiguration.class
,
那么您也需要排除ErrorMvcAutoConfiguration.class
,否则至少我会排除。
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.web.servlet.DispatcherServletAutoConfiguration;
import org.springframework.boot.autoconfigure.web.servlet.error.ErrorMvcAutoConfiguration;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
import org.springframework.context.annotation.EnableAspectJAutoProxy;
@SpringBootApplication(exclude = { DispatcherServletAutoConfiguration.class, ErrorMvcAutoConfiguration.class})
@EnableAspectJAutoProxy
public class CoreApplication extends SpringBootServletInitializer {
public static void main(String[] args) {
SpringApplication.run(CoreApplication.class, args);
}
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(CoreApplication.class);
}
}