Java 关闭弹簧护套上的DispatcherServlet
如何在SpringBoot上禁用DispatcherServlet,甚至尝试通过servlet注册禁用它uri映射显示在日志上:Java 关闭弹簧护套上的DispatcherServlet,java,spring,spring-boot,Java,Spring,Spring Boot,如何在SpringBoot上禁用DispatcherServlet,甚至尝试通过servlet注册禁用它uri映射显示在日志上: @Bean public ServletRegistrationBean servletRegistrationBean(final DispatcherServlet dispatcherServlet) { final ServletRegistrationBean servletRegistrationBean = new ServletRegistra
@Bean
public ServletRegistrationBean servletRegistrationBean(final DispatcherServlet dispatcherServlet) {
final ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(dispatcherServlet);
servletRegistrationBean.setEnabled(false);
return servletRegistrationBean;
}
日志
谢谢你的帮助 来自Spring启动文档
Spring Boot希望从应用程序的根目录开始提供所有内容。如果您希望将自己的servlet映射到该URL,您可以这样做,但当然您可能会丢失一些其他启动MVC功能。要添加您自己的servlet并将其映射到根资源,只需声明类型为servlet
的@Bean
,并为其指定特殊的Bean名称dispatcherServlet
(如果您想关闭它而不是替换它,也可以使用该名称创建不同类型的Bean)
我将下面的代码添加到我的主类中,servlet从日志中删除
@SpringBootApplication(exclude = { DispatcherServletAutoConfiguration.class })
如果排除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);
}
}
为什么要禁用它…我将对我的应用程序使用“SpringVaadinServlet”,因此我不需要SpringMVC简单地排除
SpringWebMVC
依赖项,或者排除@EnableAutoConfiguration
注释中的DispatcherServletAutoConfiguration
。实际上我是using@SpringBootApplication,我应该排除在这里吗@SpringBootApplication(排除={DispatcherServletAutoConfiguration.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);
}
}