java - server.servletPath=/* 在 spring-boot.version 2.1.7.RELEASE 中不起作用

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

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

相关文章:

java - Java cms MAGNOLIA 是否可免费用于商业网站

java - 当 HikariCP 警告泄漏时发送电子邮件

javascript - 尝试将我的应用程序发布到 Heroku 上时出现错误 :"No ' Access-Control-Allow-Origin' header 出现在请求的资源上”

java - Spring 是否提供 JpaRepositories 的 stub 实现?

带有 @RequestBody 的 Spring 多部分文件

java - Spring GenericFilterBean 中的异常处理

java - 我想加入表,但这是显示错误消息

java - 多次从 Kafka 读取同一条消息

java - 为什么 Rectangle2D.create Union() 不适合我?

spring - 为什么代理不用于 Autowiring