2016-04-20 36 views
1
<int:gateway id="com_java__TestService" service-interface="com.java.svc.TestService"> 
    <int:method name="testOperation" payload-expression="@convertObjectToMap.transformer(#args[0],#args[1])" reply-channel="replyChannel_testOperation" request-channel="requestChannel_testOperation"/> 

    </int:gateway> 

在上面的代碼剪斷雙參數從網關testOpeartion方法,並且此網關的答覆道期待即將到來的地圖繪製。所以我們想把對象類型參數轉換成地圖。我們可以創造出與春天融合創造的網關變壓類

我寫了變換器返回地圖。並且要求是在spring配置xml本身中創建映射。我不想寫任何轉換器類來轉換地圖。

當前我們已經創建了自定義convertObjectToMap bean,它具有預期兩個參數並且返回地圖的變換器方法。

我們可以使用java變壓器將cretae映射出來嗎?

回答

0

你需要描述你的變壓器實際做了什麼,以及參數是什麼。

如果它只是#args[0]是關鍵,#args[1]是價值和它的只有一個值的地圖,然後

"T(java.util.Collections).singletonMap(#args[0], #args[1])" 

應該工作。

+0

Transformer從testOperation方法中取得兩個參數並將其轉換爲map。而參數的類型是對象類型。 我已經apllied,你有建議,但是當我們運行它,給出以下錯誤 org.springframework.expression.spel.SpelEvaluationException代碼:EL1005E:(POS 0):類型無法找到「java.utils.Collections」 –

+0

對不起 - 錯字 - 'java.util.Collections'。 –

0

做了一些r & d我們找到了上述問題的解決方案。 請找代碼剪斷下面

<int:gateway id="com_java__TestService" service-interface="com.java.svc.TestService"> 
    <int:method name="testOperation" payload-expression="#args[0]" reply-channel="replyChannel_testOperation" request-channel="requestChannel_testOperation"> 
<int:header expression="#args[0]" name="fxlPayload"/> 
     <int:header expression="#args[1]" name="fxlHeader"/> 
    </int:method> 
    </int:gateway> 

我們也加入鏈中的一個變壓器和富集。 此網關將在網關後開始執行

<int:transformer expression="new java.util.HashMap()"/> 
    <int:enricher> 
     <int:property expression="headers['fxlPayload']" name="Payload"/> 
     <int:property expression="headers['fxlHeader']" name="Header"/> 
    </int:enricher> 
相關問題