0

すべての構成が XML ファイルに保存されているプロジェクトに取り組んでいます。このプロジェクトの小さな部分から始めようとしています。そのために Restlet を使用します。基本的に、私がやりたいことは、 のサブクラスをいくつか作成することですServerResource

アノテーションを使用して、どのクラス メソッドがどの HTTP メソッドを受け入れるかを指定することもできますが、それ以外のすべてに XML を使用しているため、少し気が進まないのです。HTTP メソッドを Restlet リソースのクラス メソッドにマップする方法はありますか?

Spring と Restlet の実際の統合は XML のみ (webcontext.xml) です。

  <bean id="apiComponent" class="org.restlet.ext.spring.SpringComponent">
    <property name="defaultTarget" ref="apiAppliction" />
  </bean>

  <bean id="apiAppliction" class="com.company.api.ApiApplication">
    <property name="inboundRoot" ref="router" />
  </bean>

  <!-- Define the router -->
  <bean name="router" class="org.restlet.ext.spring.SpringBeanRouter" />

  <!-- Define all the routes -->
  <bean name="/track/{trackId}" class="com.company.api.resource.TrackResource" scope="prototype" autowire="byName">
      <constructor-arg index="0" ref="serviceFactory"/> 
  </bean>
  <bean name="/album" class="com.company.api.resource.AlbumResource" scope="prototype" autowire="byName"/>  
  <bean name="/album/{albumId}/tracks" class="com.company.api.resource.AlbumTracksResource" scope="prototype" autowire="byName" />

上記の構成に追加して、HTTP メソッドをクラス メソッドにマップする方法はありますか?

4

1 に答える 1

1

実際、いいえ。Restlet 自体と Spring 構成の両方を使用して、HTTP メソッドとターゲット サーバー リソース メソッド間のマッピングを定義することはできません。

実際、これらは Restlet の 2 つの異なる部分です。

  • リクエストを処理するためのルーティングの定義 (認証、フィルター、サーバー リソースなど)。これは、メソッド内の Restlet アプリケーション クラス内で行われます (BeancreateInboundRootのプロパティ)。inboundRootapiAppliction
  • HTTP メソッドの丸めの定義。使用するサーバー リソースが選択されると、これは明示的に (メソッド内のテストhandleRequestを使用して)、または注釈を使用して、サーバー リソースに対して内部的に行われます。

実際、Spring MVC でも同じことが言えます。ControllerSpring コンテナーでコントローラーを検出する方法を定義し (たとえば、アノテーションに基づく自動検出)、専用のアノテーションを使用してコントローラーを構成します。

さらに、Roger Stocker は、XML 名前空間に基づく Spring 拡張機能の改善を提供します (このリンクを参照してくださいhttp://code4you.org/2013/07/spring-custom-xml-namespace-scheme-for-the-restlet-framework/)。このコントリビューションは現在、公式の Spring 拡張機能に統合されるためにインキュベーション中です。

役に立てば幸いです、ティエリー

于 2015-02-03T09:11:36.577 に答える