2014-06-16 157 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所說的那樣,根據將由控制器提供的數據,將來的演變將會是危險的。