3

Spring SourceとSpring in Actionの指示に従って、私はxmlの設定を最小限に抑える方法でSpring MVCを設定しようとしています。しかし、春のソースによれば、これはあなたがそれがほぼ同じであるとして、単に手動で豆を設定するハンドラを使用して、実際に簡単であるため、完全に役に立たないものとして私を打つControllerClassNameHandlerMapControllerClassNameHandlerMappingを使用したSpring MVCでの設定に関する条約?

<bean class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping"/> 

<bean id="viewShoppingCart" class="x.y.z.ViewShoppingCartController"> 
    <!-- inject dependencies as required... --> 
</bean> 

を設定する方法ですXMLの量

ここで、Spring in Actionという本は、そのコードブロックからControllerClassNameHandlerMappingを使用する最初の行が必要なように聞こえるので、はるかに便利です。しかし、私はまだこれを動作させることができませんでした。

Springの経験があれば誰でも私を助けることができますか?

答えて

8

は、実際には2つの異なるものがここにありで起こっている:

  1. URLとコントローラ
  2. のSpring Bean#1については

、ユーザーが定義したかのように、コントローラの定義との間のマッピングControllerClassNameHandlerMappingを実行すると、URLからコントローラへのマッピングが処理されます。たとえば、http://example.com/context/home - > HomeController

#2の場合、コントローラビーンを定義しておくことができます。あるいは、@Controllersとauto-wiringにSpring 2.5スタイルのアノテーションを使用する道を辿ることができます。これにより、XML Beanの定義が不要になります。そうでないと、選択はあなた次第です。

ControllerClassNameHandlerMappingを使用して回避することは、潜在的なすべてのURLをコントローラに明示的にマップする必要があります。これをうまく使用しました。あなたが使用することをお勧めします

もうひとつはDefaultRequestToViewNameTranslatorです:

<!-- Generates view names based on the request url (e.g. "/home.htm" => "home", "/user/list.htm" => "user/list", etc.) --> 
<bean id="viewNameTranslator" class="org.springframework.web.servlet.view.DefaultRequestToViewNameTranslator"/> 

またUrlBasedViewResolverを使用します。

<!-- Maps view names to tiles view definitions files. E.g., "home" => "home", etc. --> 
<bean id="viewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver"> 
    <property name="viewClass" value="org.springframework.web.servlet.view.tiles2.TilesView"/> 
</bean> 
+0

応答Jeffに感謝します。私が達成しようとしているのは今のところ#1ですが、追加のBean定義がなければ、私のURLのどれも私のコントローラへのマッピングではありません。 –

+0

そう、Spring BeanをSpring Beanにしない限り、Springはコントローラについて知りません。 defsで行うことも、アノテーションを使って行うこともできます。 –

+0

@Controller注釈があっても動作していませんが、自分の設定から何かが失われている可能性があります。 –

0

私が通り、ControllerClassNameHandlerMappingが良いエンジニアリングの練習で使用したとは思いませんコントローラJavaクラスでリファクタリング作業を行うことが実際に妨げられています。

+0

私はコンフリクトよりもコンベンションを好む、それは単に好みの問題である。私はそれがリファクタリングを妨げているとは思っていません。あなたのビューとコントローラと設定を同期させておかなければならない設定方法に対して、あなたのビューとコントローラ名を同期させなければなりません。 –

関連する問題