2017-02-20 84 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