Spring静态资源映射:controller vs addResourceHandler

时间:2014-06-16 08:17:54

标签: java spring spring-mvc

我正在尝试将一组特定的资源(音频)映射到控制器。但是资源/ **映射到所有资源。如何隔离特定的资源请求,使其不通过Spring静态资源映射,而是通过我的控制器?将音频资源移动到资源以外的其他文件夹是唯一的解决方案吗?

例如:

文件夹结构:

/resources/js
/resources/css
/resources/audio

使用Spring Web Config进行资源映射:

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

资源控制器:

public class ResourceController {

@RequestMapping(value = "/resources/audio",  
    method = RequestMethod.GET,
produces = MediaType.APPLICATION_OCTET_STREAM_VALUE)
@ResponseBody
public Resource getAudio(...) {
    }
   ....

}

2 个答案:

答案 0 :(得分:2)

  

将音频资源移动到除以外的其他文件夹   资源是唯一的解决方案吗?

问题是什么?看起来很完美:传统和直观。如果它不是静态的,那就不要让它静止。

答案 1 :(得分:0)

据我所知,没有办法在ant路径中指定排除。我认为许多基于ant路径匹配的实用程序都提供了包含和排除路径。

但是,无论如何,根据NimChimpsky所说,在未来的演变意义上,控制器将提供/resources数据,这将是危险的。