例えば下記のように @Bean アノテーションを複数書くことによって複数のフィルタを追加できる。
@Configuration public class WebConfig extends WebMvcConfigurerAdapter { @Bean public Filter filter() { return new SomeServletFilter(); } @Bean public Filter filter2() { return new SomeServletFilter2(); } }
また、おそらく上記の書き方では上から順番にフィルタが追加されるが、フィルタの登録順を決めてしまいたい場合は下記のように FilterRegistrationBean の setOrder() を用いる。
@Bean public FilterRegistrationBean filter() { FilterRegistrationBean bean = new FilterRegistrationBean(); bean.setFilter(new SomeServletFilter()); bean.setOrder(2); // 数字が大きいほうが後に呼ばれる return bean; } @Bean public FilterRegistrationBean filter2() { FilterRegistrationBean bean = new FilterRegistrationBean(); bean.setFilter(new SomeServletFilter2()); bean.setOrder(1); // 数字が小さいほうが先に呼ばれる return bean; }
他にも Configuring boot servlet context and filters | Level Up Lunch などによると何かしらの初期化時に ServletContext に addFilter() すればよいらしいがうまく行かなかったのでここでは割愛する。
2016/08/05 追記
これらの設定はおそらく Spring Boot は関係なくて Spring Framework の DI の設定らしい。
Spring のコードはちゃんと読んでないけど、おそらく Spring 側の Autowired 時に同じ型のものが複数定義されていた場合に取得する方法( List
参考文献
Configuring boot servlet context and filters | Level Up Lunch
Convert an existing application to Spring Boot - Spring Boot Reference Guide