<resources ...
タグが希望どおりに機能しない場合は、ResourceHttpRequestHandlerをサブクラス化して、必要な機能を含めることができます。
例: カスタム Location の ResourceHttpRequestHandler をサブクラス化する
package com.test;
public class MyCustomResourceHttpRequestHandler extends ResourceHttpRequestHandler {
private String yourCustomPath;
@Override
protected Resource getResource(HttpServletRequest request) {
String path = (String) request.getAttribute(HandlerMapping.PATH_WITHIN_HANDLER_MAPPING_ATTRIBUTE);
...
//put whatever logic you need in here
return new FileSystemResource(yourCustomPath + path);
}
public void setYourCustomPath(String path){
this.yourCustomPath = path;
}
}
これで、タグをドロップして<resources ...
、以下のようにハンドラーをコンテキストに登録できます。次に、受信したリクエストは/resources/**
カスタム クラスにルーティングされます。基本的に、セッターを介して変数をlocation
変更することで制御します。yourCustomPath
<bean name="resourceHandler" class="com.test.MyCustomResourceHttpRequestHandler">
<property name="locations">
<list>
<!-- you'll be overriding this programmatically -->
<value>/resources/</value>
</list>
</property>
</bean>
<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="urlMap">
<map>
<entry key="/resources/**" value-ref="resourceHandler"/>
</map>
</property>
</bean>
resourceHandler
Bean を他のクラスに注入し、setter を呼び出しyourCustomPath
てプログラムで設定および変更できるようになりました。