server.servletPath=/* 在 spring-boot.version 2.1.7.RELEASE 中不



我一直在application.properties文件中使用以下属性,spring-boot.version 1.5.6.RELEASE没有任何问题。

server.servletPath=/*

这是一种解决方法,用于启用库类中的方法,该方法使用javax.servlet.http.HttpServletRequest的函数getPathInfo()来获取有效值而不是null

我不得不使用这种解决方法,因为不再支持该库 jar。

当我将应用程序升级到spring-boot.version 2.1.7.RELEASE时,此解决方法开始失败

从 Spring Boot 2 开始,server.servletPath更改为spring.mvc.servletPath

我尝试设置以下属性,但它不起作用

spring.mvc.servletPath=/*

我还在我的配置类中尝试了以下函数,但它不起作用。

@Bean
public DispatcherServletRegistrationBean dispatcherServletRegistration(
DispatcherServlet dispatcherServlet,
ObjectProvider<MultipartConfigElement> multipartConfig) {
DispatcherServletRegistrationBean registration = new DispatcherServletRegistrationBean(
dispatcherServlet, "/*");
registration.setName("dispatcherServlet");
registration.setLoadOnStartup(-1);
multipartConfig.ifAvailable(registration::setMultipartConfig);
return registration;
}

您能否使用spring-boot.version 2.1.7.RELEASE为此属性提供工作解决方案?

谢谢 迪努

较新的 spring 版本的正确设置是:

spring.mvc.servlet.path=/some/path

这会更改 DispatcherServlet 的映射,因此 spring 提供的所有资源都映射到此路径。

如果设置:

server.servlet.contextPath=/some/path

整个 Web 上下文已更改。

主要区别在于,设置调度程序 servlet 路径允许您在其他路径上注册其他 servlet,而设置上下文路径后,Spring boot 的 tomcat 只能提供该上下文路径下的内容。

在最新的 Spring 引导版本上使用以下配置属性:

server.servlet.contextPath=/*

最新更新