我一直在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=/*