2014-06-16 116 views
0

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

例如:

文件夹结构:

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

资源映射使用Spring Web配置:

@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

在发布之前,我感觉Controller与资源处理程序之间会有冲突,因为它们都具有相同的请求映射资源/ 。经过测试,我发现没有冲突。但是一般来说这里的原则是什么,它应该被移到资源处理器映射之外,因为它被控制器处理。 – jeera

0

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

但是无论如何,就像NimChimpsky所说的那样,根据将由控制器提供的数据,将来的演变将会是危险的。