Spring Bootでサードパーティのフィルタ(Filter)を設定する方法
Spring Bootでサードパーティのフィルタ(Filter)を設定する方法です。
Spring Bootでサードパーティのフィルタや、オレオレライブラリのフィルタを設定には、「Spring BootでFilterする方法」でも紹介した FilterRegistrationBean を使用します。
Spring Boot には web.xml がないので、ちょっと悩むかもしれませんが、慣れてしまえばふーんな感じですよ。
ここでは Spring Bootでサードパーティのフィルタ(Filter)を設定する方法 を紹介します。
環境
- Spring Boot 1.4.1
- Windows7
- Java8
- Eclipse 4.6 Neon
Spring Bootでサードパーティのフィルタ(Filter)を設定
仮に web.xml に下記のようなフィルタの記載があったとします。
<filter>
<filter-name>HogeFilter</filter-name>
<filter-class>com.sakaen.HogeFilter</filter-class>
<init-param>
<param-name>firstParamName</param-name>
<param-value>firstParamValue</param-value>
</init-param>
<init-param>
<param-name>secondParamName</param-name>
<param-value>secondParamValue</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>HogeFilter</filter-name>
<url-pattern>/url/*</url-pattern>
</filter-mapping>
例によって WebMvcConfigurerAdapter を extened した WebConfig クラスを作り、@Bean アノテーションをメソッドに指定します。
@Configuration
public class WebConfig extends WebMvcConfigurerAdapter {
@Bean
public FilterRegistrationBean HogeFilter() {
FilterRegistrationBean bean = new FilterRegistrationBean();
bean.setFilter(new HogeFilter());
bean.addUrlPatterns("/url/*");
bean.addInitParameter("firstParamName", "firstParamValue");
bean.addInitParameter("secondParamName", "secondParamValue");
bean.setName("hogeFilter");
bean.setOrder(1);
return bean;
}
}
各メソッドの使い方は下表を参考に。
メソッド | 説明 |
---|---|
setFilter | サードパーティフィルタやオレオレフィルタのクラスをインスタンス化して設定する。 |
addUrlPatterns | URLパターンを設定。アプリケーション内全てにフィルタする場合は、"/*"を指定する。 |
addInitParameter | 初期パラメータを設定する。複数パラメータを設定することもできる。 |
setName | フィルタの名前を設定する。 |
setOrder | 複数フィルタ設定した場合、動作させる順番を指定する。 |
まとめ
Spring Bootでサードパーティのフィルタ(Filter)を設定する方法を紹介しました。
プログラムの中に設定を書くのが抵抗ある人っていると思うんですよねー。例えば、開発環境と本番環境で init-param の値が違うんだよー、なんて場合には application.yml に設定しておくと便利です。この辺りは「Spring Bootで設定ファイル(yaml)を読み込む方法」で紹介しているので参考にしてみてください。
おつかれさまでした。