4

Spring Sourceと本の Spring in Actionの指示に従って、xml 構成を最小限に抑える方法で Spring MVC をセットアップしようとしています。ただし、Spring Source によると、これは ControllerClassNameHandlerMap を設定する方法です

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

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

ほぼ同じ量の XML であるため、ハンドラーを使用して Bean を手動で設定する方が実際には簡単であるため、これはまったく役に立たないと思います。

現在、Spring in Action という本では、コード ブロックの最初の行で ControllerClassNameHandlerMapping を使用するだけでよいように思われます。これにより、はるかに便利になります。しかし、私はまだこれを機能させることができませんでした。

春の経験を持つ人は私を助けることができますか?

4

2 に答える 2

8

ここでは、実際には 2 つの異なることが行われています。

  1. URL とコントローラ間のマッピング
  2. Spring Bean としてのコントローラーの定義

#1 については、これまで行ったように ControllerClassNameHandlerMapping を定義すると、URL からコントローラーへのマッピングが処理されます。例: http://example.com/context/home -> HomeController

#2 については、行ったようにコントローラー Bean を定義できます。または、@Controllers と自動配線に Spring 2.5 スタイルのアノテーションを使用する道をたどることができます。これにより、XML Bean 定義が不要になります。かどうか、選択はあなた次第です。

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

もう 1 つ使用するとよいのは、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>
于 2009-03-19T17:27:00.797 に答える
0

ControllerClassNameHandlerMapping を使用すると、Controller Java クラスでリファクタリング作業を行うことが実際に妨げられるため、エンジニアリングの実践としては適切ではないと思います。

于 2009-08-25T00:27:50.767 に答える