我正在使用 spring boot 2.0.1.RELEASE。
我正在将应用程序从弹簧(WAR(迁移到弹簧启动。它使用 GWT,它使用依赖于getServletContext().getResourseAsStream()
方法按预期工作的 servlet。我已经在 https://github.com/spring-projects/spring-boot/issues/12868 上传了一个可重现的项目。
当对 http://localhost:8080/mymodule/afile.rpc 执行 GET 请求时,您可以看到该文件被返回,但是如果您在执行 servlet http://localhost:8080/mymodule/dispatch 执行,则 servlet 使用 getServletContext().getResourseAsStream()
返回相同的文件,但在这种情况下返回 null。
知道吗?
我之前看到过类似的问题并标记为已解决,但也许在 Spring 启动 2.0.1 中再次失败。类似问题: #8525
根据安迪·威尔金森
从类路径提供静态资源:static 是一个 Spring MVC 由 Spring 引导自动配置的功能。servlet 容器 和 servlet 上下文对此一无所知是可以预期的 尝试通过 servlet 上下文访问文件不起作用。
如果您希望静态内容由 servlet 容器提供,则 应该把它放在 servlet 容器可以找到它的位置。 例如,在打包为 war 文件的应用程序的根目录中
我终于调整了servlet,使用类加载器而不是servlet上下文来选择文件。