2つの異なるサーバー上で実行されるSpringブートを使用する2つのRESTサービスがあります。この通信にはRESTテンプレートを使用しています。ジェネリック型と多型の変換を含むWebサービス間の型のリストの受け渡し
これらの2つのサービスで共有されるモデルもあります。これらのモデルはすべて「IDataToTransferred」タイプです。
'IDataToTransferred'は、さまざまなモデルBeanによって実装されたマーカーインターフェイスです。
これらのRESTサービス間でこれらのモデルのリストを渡すための共通のロジックを記述する必要があります。
したがって、SenderサービスからReceiver Serviceまでのパラメータ List<? extends IDataToTransferred>
を使用するロジックを作成しました。
更新:いくつかのコード
でIDataToTransferred.javaは、マーカーインターフェイスです
DataToBeSent.java
DataToBeSent Implements IDataToTransferred{
//Simple Pojo
}
SenderService.java
sendData(List<? extends IDataToTransferred> uploadDataObjectList){
//Some Code with REST Template
//restTemplate.postForEntity
}
IDataToTransferredインターフェイスは、通信するWebサービス間で共有されます。
DataToBeReceived.java
DataToBeReceived Implements IDataToTransferred{
//Simple Pojo
}
ReceiverService.java RESTサービスで
receiveData(List<? extends IDataToTransferred> uploadDataObjectList){
//Some Code to convert uploadDataObjectList to DataToBeReceived
}
ノートは、私は常に415エラーを取得しました。サポートされていないメディアの種類。 Receiverで同じList<? extends IDataToTransferred>
を使用すると
Receiver側でこれをList<? super IDataToTransferred>
に変更しましたが、現在は動作していますが、Producerがコンシューマースーパールールを拡張しているため推測しています。
しかし問題は、Receiver SideのIDataToTransferredタイプに型キャストできないということです。リストの中で私はすべてのリンクされたハッシュマップを取得しています.Jsonはこれらのサービスの間でリンクされたHashMapに変換されています。
ReceiverServiceでDataToBeReceivedクラスオブジェクトを取得するにはどうすればよいですか?
簡単にするために、私はコントローラを削除しました。彼らはサービスと同じ署名を持っていると仮定してください。
どの回答がお望みですか?あなたはコード行を投稿していません。不明確な説明から問題を解決できる魔法はありません。 – StanislavL
私はコードを掲載します。 @JsonSubTypesを使った解決策がありましたが – DragonZoned