我一直在 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
server.servletPath
从 Spring Boot 2 开始更改为 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
整个网络环境都改变了。
主要区别在于,设置调度程序 servlet 路径允许您在其他路径上注册其他 servlet,而设置上下文路径时,Spring Boot 的 tomcat 只能提供该上下文路径下的内容。
关于java - server.servletPath=/* 在 spring-boot.version 2.1.7.RELEASE 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57733555/