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

时间:2019-08-30 21:48:49

标签: java spring spring-boot spring-mvc java-8

我一直在application.properties的{​​{1}}文件中使用以下属性,没有任何问题。

spring-boot.version 1.5.6.RELEASE

这是一种解决方法,可以在库类中启用使用server.servletPath=/* 的函数getPathInfo()来获得有效值而不是javax.servlet.http.HttpServletRequest的方法。

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

当我将应用程序升级到null

时,此解决方法开始失败 从Spring Boot 2起,

spring-boot.version 2.1.7.RELEASE更改为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; } 来为此物业提供可行的解决方案吗?

谢谢, 迪努

2 个答案:

答案 0 :(得分:1)

在最新的春季启动版本上使用以下配置属性:

server.servlet.contextPath=/*

答案 1 :(得分:1)

较新的弹簧版本的正确设置是:

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

这将更改DispatcherServlet的映射,因此spring服务的所有资源都将映射到此路径。

如果您设置:

server.servlet.contextPath=/some/path

整个Web上下文已更改。

主要区别在于,设置分派器servlet路径允许您在其他路径上注册其他servlet,而设置了上下文路径后,spring boot的tomcat只能在该上下文路径下提供内容。