2016-08-02 16 views
-1
  • Spring ApplicationContextInitializerを使用して新しいサーブレットフィルタを登録することはできますか?
  • spring.factoriesにカスタムクラスを指定するServletContextにアクセスする方法はありますか?

ライブラリーがプロジェクトに追加されている場合、自動的にサーブレットフィルターを登録する小さなライブラリーを作成することが考えられます。spring.factoriesを使用してサーブレットフィルタを追加する方法

誰かが、どのようにSpring Bootと最も重要なプレーンスプリング(レガシーアプリケーション用)をサポートしているのかを、ユーザーから透過的に理解する方がいいでしょうか?

答えて

1

は、あなたはいくつかのことをしなければならない。

1)適切な依存関係を持つJARモジュールに適切なのmaven/Gradleの設定を作成します。

2)フィルタ設定で設定クラスを作成します。

package com.test; 

@Configuration 
public class FilterConfig { 
    @Bean 
    public FilterRegistrationBean contextFilterRegistrationBean() { 
     FilterRegistrationBean registrationBean = new FilterRegistrationBean(); 
     RequestContextFilter contextFilter = new RequestContextFilter(); 
     registrationBean.setFilter(contextFilter); 
     registrationBean.setOrder(1); 
     return registrationBean; 
    } 
} 

3)ファイルのsrc /メイン/リソース/ META-INF/spring.factoriesを作成し、追加します:たとえば、あなたのjarファイルをインストール/パブリッシュとの依存関係としてそれを含める)

4あなたのSpring Bootアプリケーションが使用される依存関係を追加するすべてのSpring BootアプリケーションにFilterConfigが自動的にロードされるはずです(注釈@SpringBootApplicationを使用してI.E.)。

+0

解決と努力をいただきありがとうございます。残念ながら私はSpring Bootのこの種の解決策を知っています。私は、Spring以外のブートアプリケーションでも同じことを達成できるかどうかを期待していました。私はいくつかのレガシーSpringアプリケーションをサポートする必要があるからです。 –

+0

Spring以外のアプリケーションの修正は一切ありませんか? – Ulises

+0

うまくいけば、はい。だから、私はspring.factoriesとApplicationContextInitializerを調べています。しかし、その時点から私はServletContextにアクセスすることはできません。良いことは、あまりにも多くのレガシーアプリケーションを持っていないということです。そのほとんどはSpring Bootであり、あなたのアプローチを使用することができます。 –

0

次のようにConfigurationクラスでサーブレットBeanを作成します。

@Bean 
public ServletRegistrationBean envServlet() { 
    EnvServlet envServlet = new EnvServlet(); 
    ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(envServlet, "/boot/env"); 
    servletRegistrationBean.setName("bootEnvServlet"); 
    return servletRegistrationBean; 
} 

春には、コンテナをサーブレット・org.springframework.boot.context.embedded.RegistrationBeanのサブクラスを登録します。あなたは非常に簡単にそれを行うことができます

関連する問題