2017-02-20 79 views
1

我正在調用基於請求類型返回結果集中不同數據的過程。 爲此,我使用stored-proc-outbound-gateway請求類型傳遞給過程,但在映射器內部不可用。基於有效負載的彈簧集成返回結果集

我可以使用ColumnMetaData來處理resultSet,但我更喜歡具有特定的請求類型映射器。 其他解決方案是具有儘可能多的請求類型的網關,但也許有更好的。

我可以根據有效載荷指定要使用哪個映射器:stored-proc-outbound-gateway

回答

0

那麼,說實話,如果我是你,我真的會爲特定類型製作單獨的組件。在未來,邏輯可能會更復雜,並且修改特定功能比試圖找出如何提出所有這些if..else更容易。

不過你的要求是不同的......

正如你看到的只有一個可能鉤你在那裏 - RowMapper注射特定的程序PARAM。

我可以建議像RoutingRowMapper這樣的解決方案,它會諮詢一些ThreadLocal變量來選擇合適的RowMapper委託。

這個想法是從AbstractRoutingDataSource拿起。 Spring AMQP中還有類似SimpleRoutingConnectionFactory的東西。

ThreadLocal你可以在stored-proc-outbound-gateway之前填充,這真的可以是你想要的類型。

另一個技巧可能是基於ResultSet包含一個提示,其目標RowMapper可供選擇的過程的結果。

以任何方式您的任務只能通過複合RowMapper來實現。 stored-proc-outbound-gateway沒有任何邏輯來解決,也不會。這不是它的責任。

+0

謝謝澄清。 我已經提出了不同的請求類型處理器。 我同意,在RowMapper內部作出決定是更清潔的解決方案。 – Ving