2017-06-19 18 views
1

私はSpring MVCには新しく、1つの質問があります。MVC Annotation Spring MVC <mvc:annotation-driven />

サーブレット設定で@Controller、@RequestMappingなどの注釈を処理するタグが<mvc:annotation-driven />ですが、私はポートレットを使用しています。この注釈がここでどのように機能するかは非常に興味がありますか?

Thx!

+0

注釈:この要素によって走査注釈は次のとおり? – Juvanis

+0

申し訳ありません、それは春からのタグです-contextファイル:)私はちょうど今投稿を編集しました:) –

答えて

1

MVC:annotation-はデフォルトの設定でSpring MVCコンポーネントを有効にするために使用されます。

あなたはMVCを含めいけない場合:豆を作成するためのコンポーネントスキャンしたり、XMLファイル

で豆を定義した:あなたはコンテキストを使用している場合は、アノテーション・ドリブンはまたあなたのMVCアプリケーションが動作します。しかし、mvc:annotation-drivenは、XMLファイルでこの要素を使用していない場合、構成されていない特別なBeanを構成する上で特別な作業を行います。

このタグは、@Controllerにリクエストをディスパッチするために必要なHandlerMappingおよびHandlerAdapterを登録します。さらに、クラスパスに存在するものに基づいていくつかのデフォルトを適用します。このようなデフォルトは次のとおりです。JavaBeansののPropertyEditorに、より簡単で 堅牢な代替手段として日付をフォーマットするための@NumberFormat

  • サポート、カレンダーと数値フィールドをフォーマットするための

  • サポートを春の3種類ConversionServiceを使用して

    • 、Joda Timeフィールドが @DateTimeFormatの場合、Joda Timeがクラスパス上にある場合

    • JSR-303の場合@Validで@Controller入力を検証するサポートコンポーネント・スキャン:プロバイダは、クラスパス
    • 読み取りと書き込みXMLのための
    • サポート、JAXBは、クラスパス上にある場合
    • 読書やJSONを書くためのサポート、ジャクソンがクラスパス上にある場合

    状況にあります要素を使用すると、XMLファイル内のすべてのBeanを宣言する必要がなくなります。あなたの春の設定ファイルに以下の宣言を見てください:

    <context:component-scan base-package="org.controller"/> 
    

    Springアプリケーション構成ファイルに上記の宣言は、指定されたパッケージ内のクラスをスキャンして、豆のインスタンスを作成します。そのクラスに正しい注釈が注釈されている場合のみ、Beanを作成できることに注意してください。

    • @Component
    • @Repository
    • @Service
    • @Controller
  • 3

    同じように動作します。

    あなたが使用しますJava構成で行く場合:

    ... 
    @Configuration 
    @EnableWebMvc <- (equivalent to <mvc:annotation-driven />) 
    @ComponentScan(basePackageClasses = { MyConfiguration.class }) 
    ... 
    

    それとも、あなたが使用しますxml構成で行く場合:

    ... 
    <mvc:annotation-driven /> 
    <context:component-scan base-package="package.*" /> 
    ... 
    
    関連する問題