2012-04-03 14 views
4

私はSpring 3.1で新しいプロジェクトを開始しています。@Controller注釈の使い方についてのドキュメンテーションやフォーラムの意見はすべて熟読しています。注釈のないSpring MVC 3.1?

私はMVCのアノテーションを個人的に嫌っています。 SimpleUrlHandlerMappingを使用して、WebアプリケーションのすべてのURLを1か所で利用できるようにしたいと思っています。

また、Spring 2.xを使用して以前の多くの作業から、私はBaseCommandController階層に非常に慣れています。

私はいつもスプリングを愛してきました。なぜなら、それは制限されることなく力を与えるからです。今、私はSpring MVCがURLをjavaソースに入れることを強制していることを知っています。(a)コントローラーを複数のURLにマップすることはできません。(b)Webappで使用されているURLを発見するには、私は実用的ではないと思うさまざまなJavaソースファイルを介して。

@ControllerとSimpleUrlHandlerMappingを組み合わせるにはどうすればよいですか?


更新:

こんにちはデイブ、あなたはこのように(petclini.web.ClinicControllerから変更された)複数のURLをマッピングすることができると言っていますか?

@RequestMapping({"/vets", "/another"}) 
public ModelMap vetsHandler() { 

これがうまくいく場合。

私の質問はまだありません: URLを自分のJavaソースに入れたくない場合は、@Controllerクラスにマップするのに最適ですか?

よろしく、ここで

+0

複数のURLをもうマップできないことに気づいていません。ドキュメント参照はありますか? –

+0

コメントとして@(ユーザー名)を使用してコメントに返信する - あなたが元の質問に埋め込まれた質問を誰かに聞いた場合、それは見えないかもしれません。私はあなたに*変更されているかどうかを尋ねています。変更されている場合は、ドキュメントリンクを提供してください。個人的には、ルーティング用に[this](https://github.com/bclozel/springmvc-router)のようなものを使用します。私は自分自身を転がしたが、明らかに他の人もそうした。 –

+0

@Dave Newton:リンクをありがとう、私はそれを調べるつもりです。 (私は質問で答えたので、コードを書式化することができました) – Stewart

答えて

3

は、注釈と非注釈付きコントローラをサポートするように設定は簡単です。

ディスパッチャサーブレット構成XML

<mvc:annotation-driven/> 
<bean id="testController" class="com.test.web.TestController"/> 
<bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/> 
<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> 
    <property name="mappings"> 
     <value> 
     /test=testController 
     </value> 
    </property> 
    <property name="order" value="0"/> 
</bean> 

シンプルなURLマッピングされたコントローラ

public class TestController implements Controller { 

    @Override 
    public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception { 
     PrintWriter responseWriter = response.getWriter(); 
     responseWriter.write("test"); 
     responseWriter.flush(); 
     responseWriter.close(); 
     return null; 
    } 
} 

あなたがあなた自身のハンドラを使用する場合は、MVCの注釈-config設定

@Controller 
@RequestMapping("/home") 
public class HomeController { 

    @RequestMapping(method = RequestMethod.GET) 
    @ResponseBody 
    public String dashboard(Model model, HttpServletRequest request) { 
     return "home"; 
    } 
} 

用コントローラ@Controllerアノテーション。おそらくClassPathBeanDefinitionScannerDefaultAnnotationHandlerMapping.determineUrlsForHandlerMethodsを見ることができます。

+0

これは有効と思われますが、これは一つの方法だと思いますが、Controllerインターフェイスではなく、SimpleUrlHandlerMappingで@Controllerについて特に質問していました。特にこのインターフェイスの実装が廃止されました。 – Stewart

+0

サブクラスを作成するプランが好きです:http://grepcode.com/file/repo1.maven.org/maven2/org.springframework/spring-webmvc/3.1.0.RELEASE/org/springframework/web/servlet/mvc/ annotation/DefaultAnnotationHandlerMapping.java#DefaultAnnotationHandlerMapping.detUrlsForHandler%28java.lang.String%29これはspringmvc-routerがやろうとしていたものでしょうか? – Stewart

関連する問題