java - Spring 4.1.2 更新后找不到资源

标签 java spring spring-mvc

当我将 Web 应用程序从 Spring 4.1.0 更新到 4.1.2 后,资源映射停止工作。

在没有任何更改的情况下,对任何资源的每个请求都会返回“HTTP 404 - NOT FOUND”(.js、.png 等...)。

然后我切换回 Spring 4.1.0,一切又恢复正常了。

这是我的应用程序配置类:

public class MvcConfiguration extends WebMvcConfigurationSupport {

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/resources/**").addResourceLocations("/resources/**");
    }

}

这个问题类似于:Resource Not Found after Spring 4.1.2 Update when deploy with JRebel 6.0.0

我的资源位于:

  • [项目]\WebContent\资源

这是我的 servlet 初始值设定项:

public class WebInitializer extends AbstractAnnotationConfigDispatcherServletInitializer implements HttpSessionListener {

    private static final int MAX_UPLOAD_SIZE = 1 * 1024 * 1024; // 1mb;

    @Override
    protected Class<?>[] getRootConfigClasses() {
        return new Class<?>[] { MvcConfiguration.class };
    }

    @Override
    protected Class<?>[] getServletConfigClasses() {
        return null;
    }

    @Override
    protected String[] getServletMappings() {
        return new String[] { "/" };
    }

    @Override
    protected Filter[] getServletFilters() {
        CharacterEncodingFilter encodingFilter = new CharacterEncodingFilter();
        encodingFilter.setEncoding("UTF-8");
        encodingFilter.setForceEncoding(true);

        return new Filter[] { encodingFilter, new MultipartFilter() };
    }

    @Override
    protected void customizeRegistration(Dynamic registration) {
        File uploadDirectory = new File(System.getProperty("java.io.tmpdir"));
        MultipartConfigElement multipartConfigElement = new MultipartConfigElement(uploadDirectory.getAbsolutePath(), MAX_UPLOAD_SIZE, MAX_UPLOAD_SIZE * 2, MAX_UPLOAD_SIZE / 2);
        registration.setMultipartConfig(multipartConfigElement);
    }

最佳答案

只需将您的资源处理程序更改为以下内容:

public class MvcConfiguration extends WebMvcConfigurationSupport {

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/resources/**").addResourceLocations("/resources/");
    }
}

从 Spring 4.1.1 升级时,这也破坏了我的代码,但删除 Spring 4.1.6 中的尾随 /** 解决了这个问题。

关于java - Spring 4.1.2 更新后找不到资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27277873/

相关文章:

java - Spring mvc 映射 json 到 pojo 属性为空

java - Spring MVC 将请求参数绑定(bind)到 POJO 字段

java - 不能 Autowiring 接口(interface)

java - 如何在声明java中初始化一个点数组

java - 如何为 Java 文件构建编译图?

java - 按键后 JPanel 不更新

java - 如何使用 AutoWired 将 spring bean 注入(inject) ContainerRequestFilter ?

java - Spring MVC 和 Apache Tiles - 404 错误

spring - 如何有条件地启用/禁用 web.xml 中的过滤器

spring-mvc - Spring MVC Controller 中JsonView的动态选择