繁体   English   中英

在 Spring Boot 上关闭 DispatcherServlet

[英]Switch off DispatcherServlet on Spring Boot

如何在 SpringBoot 上禁用 DispatcherServlet,甚至尝试通过 servlet 注册禁用它,uri映射出现在日志中:

@Bean
public ServletRegistrationBean servletRegistrationBean(final DispatcherServlet dispatcherServlet) {
    final ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(dispatcherServlet);
    servletRegistrationBean.setEnabled(false);

    return servletRegistrationBean;
}

日志

2015-06-10 10:39:57.552  INFO 7032 --- [           main] o.s.b.c.e.ServletRegistrationBean        : Servlet dispatcherServlet was not registered (disabled)
2015-06-10 10:39:57.553  INFO 7032 --- [           main] o.s.b.c.e.ServletRegistrationBean        : Mapping servlet: 'dispatcherServlet' to [/]

感谢任何帮助!

我将以下代码添加到我的主类中,并从日志中删除了 servlet。

@SpringBootApplication(exclude = { DispatcherServletAutoConfiguration.class })

来自此处的Spring Boot 文档

Spring Boot 想要从应用程序的根目录/向下提供所有内容。 如果您更愿意将您自己的 servlet 映射到该 URL,您可以这样做,但当然您可能会失去一些其他 Boot MVC 功能。 要添加您自己的 servlet 并将其映射到根资源,只需声明一个Servlet类型的@Bean并为其指定特殊的 bean 名称dispatcherServlet (如果您想将其关闭,也可以使用该名称创建不同类型的 bean 并不更换)。

如果您排除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);
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM