Springs を使用して複数の Rest Web サービスへのアクセスを処理する最良の方法について、誰かが私にアドバイスできますRestTemplate
か?
RestTemplate
オブジェクトにメッセージ コンバータ参照 ( MarshallingHttpMessageConverter
) があり、これが への参照を持っていることはわかっていますunmarshaller
。私の場合CastorMarshaller
、関連付けられたマッピング ファイルで Spring Frameworks オブジェクトを使用しています。
通常、すべてのマッピングを 1 つの Castor マッピング ファイルに追加するだけで済みます。ただし、私の場合、すべての Web サービスはこの形式 (以下のブロック) であり、呼び出されたサービスに応じて異なるエンティティを保持する < 行 ... /> があります。
<data>
<output>
<dataset>
<row id="" .... />
<row id="" .... />
<row id="" .... />
<row id="" .... />
<row id="" .... />
</dataset>
</output>
<nextUpdate><nextUpdate/>
</data>
CastorMarshaller
が に注入され、MessageConverter
それ自体がRestTemplate
アプリケーション コンテキスト構成ファイルの に注入されます。
<bean id="restTemplate" class="org.springframework.web.client.RestTemplate">
<property name="messageConverters">
<list>
<bean class="org.springframework.http.converter.xml.MarshallingHttpMessageConverter">
<property name="marshaller" ref="castorMarshaller"/>
<property name="unmarshaller" ref="castorMarshaller"/>
<property name="supportedMediaTypes">
<list>
<bean class="org.springframework.http.MediaType">
<constructor-arg index="0" value="application"/>
<constructor-arg index="1" value="xml"/>
</bean>
<bean class="org.springframework.http.MediaType">
<constructor-arg index="0" value="text"/>
<constructor-arg index="1" value="xml"/>
</bean>
</list>
</property>
</bean>
</list>
</property>
</bean>
<bean id="castorMarshaller" class="org.springframework.oxm.castor.CastorMarshaller">
<property name="mappingLocation" value="classpath:oxm-mapping-worldweather.xml"/>
</bean>
私が考えてきた可能なオプション:
RestTemplates
1 Rest サービスごとに複数作成します。
2 サービスごとに複数作成MessageConverters
し、別のサービスにアクセスする場合は、テンプレートのメッセージ コンバーターを変更します。
3 異なるサービス用に複数のCasterMarshaller
オブジェクトを作成し、新しいオブジェクトでメッセージ コンバーターを更新します。unmarshaller
同じルート要素とサブ要素を使用して、このような複数のサービスを処理する最善の方法は何ですか?
よろしくお願いします Sman UK