私はSpring 4.0.7で作業しています
JavaConfigを介してSpring MVCを構成することについて調査しました。
昨日まで、これらの2つのオプションを使用した2つの構成を見てきました。
注:(2)は、拡張用と実装用の2つのクラスです
(2)を使用しているのは、コンバーター、フォーマッター、リソースハンドラーなどを構成できる多くの例を見つけたためです...
しかし、最近では、StackOverflowに関する質問を支援しようとして、(1)が存在することを認識しました。Googleで(1)について概要を説明し、(1)
私の質問は、この投稿のタイトルがどのように記述されているかです。
ありがとうございました
Servlet 3.0仕様のリリースにより、(ほとんど)xmlなしでServlet Containerを設定することが可能になりました。このため、サーブレット仕様には ServletContainerInitializer
があります。このクラスでは、従来のweb.xml
で行うように、フィルター、リスナー、サーブレットなどを登録できます。
Springは、 SpringServletContainerInitializer
クラスの処理方法を知っている WebApplicationInitializer
の実装を提供します。また、Springは、AbstractAnnotationConfigDispatcherServletInitializer
もその1つであるため、生活を楽にするために拡張するいくつかの基本クラスを提供します。 ContextLoaderlistener
(オプション)とDispatcherServlet
を登録し、両方のクラスにロードしてフィルターをDispatcherServlet
に適用し、サーブレットマッピングを提供するための構成クラスを簡単に追加できます。
WebMvcConfigurerAdapter
は、Spring MVCを構成するためのDispatcherServlet
によってロードされたxmlファイルを置き換える、Spring MVCを構成するためのものです。 WebMvcConfigurerAdapter
は、@Configuration
クラスに使用する必要があります。
@Configuration
@EnableWebMvc
public class WebConfiguration
extends WebMvcConfigurerAdapter implements WebApplicationInitializer
{ ... }
これらは基本的に2つの異なる懸念事項であるため、これらを混ぜることはお勧めしません。 1つ目はサーブレットコンテナの構成用、2つ目はSpring MVCの構成用です。
それらを2つのクラスに分割します。
設定用。
@Configuration
@EnableWebMvc
public class WebConfiguration extends WebMvcConfigurerAdapter { ... }
アプリケーションのブートストラップ用。
public class MyWebApplicationInitializer
extends AbstractAnnotationConfigDispatcherServletInitializer
{
protected Class<?>[] getRootConfigClasses() {
return new Class[] {RootConfig.class};
}
protected Class<?>[] getServletConfigClasses() {
return new Class[] {WebConfiguration .class};
}
protected String[] getServletMappings() {
return new String[] {"/"};
}
}
追加の利点は、DispatcherServlet
やContextLoaderListener
を手動で構成する代わりに、Springが提供する便利なクラスを使用できるようになったことです。
最初から始めるには、サーブレットコンテナがどのように開始するかを調べる価値があります。
そのため、SpringServletContainerInitializerはWebApplicationInitializerを実装する適切なクラスを見つける必要があります。それを実現する方法は2つあります。
また、 WebMvcConfigurerAdapter をWebApplicationInitializerと混同しないでください。名前が示すように、「Mvc」の構成に関係しています。 WebMvcConfigurer からの空のメソッドを実装するアダプタークラスです。 @ EnableWebMvc アノテーションを使用してMvcコントローラーを構成するときに使用します。
お役に立てれば。