2016-06-01 5 views
1

Ich bin relativ neu mit SI (ich sage "relativ", weil ich etwas Arbeit mit SI Version 0.6 bis 1, aber ich musste dann aufhören und ich bin jetzt wieder in 4.2 .5) und jetzt schreibe ich ein paar Prototypen für POCs. In einem von damals konfigurierte ich einen Kanal, der von einem jdbcChannelMessageStore unterstützt wurde, den ich auf einfache Art anpassen wollte. Um die Spalte MESSAGE_BYTES von Bytea in Text zu ändern.Anpassen eines jdbcChannelMessageStore in Spring Integration

Also änderte ich das Schema-postgresql.sql, um diese Änderung aufzunehmen und hoffe, dass ich nur die JDBC-Anweisung für die INSERT neu schreiben konnte. Auch wenn die Anweisung selbst leicht änderbar ist, ist das Festlegen der Parameter nicht möglich, da sie innerhalb eines Lambda innerhalb der Methode jdbcTemplate.update selbst innerhalb der Methode addMessageToGroup eingebettet ist. Die einzige Lösung wäre also, die gesamte addMessageToGroup-Methode zu überschreiben, was überhaupt keine gute Lösung zu sein scheint, da sie mehr Logik enthält als die einfache jdbc-Einfügung.

Also was am Ende war, was ich meinen Code als // sehr großer Hack kommentiert habe. Ich überschreibe den DefaultLobHandler zu eigentlich nicht Verwenden Sie den Lob an allen außer einem setString (...) statt.

Also, ich habe eine Frage und einen Vorschlag:

Gibt es eine Möglichkeit, die JdbcChannelMessageStore gestalten unsere eigene Schema-Struktur zu haben und/oder unsere eigenen Aussagen, ohne Dinge wie diese „große Hack“ mit?

Wenn es keinen besseren Weg gibt, kann ich vorschlagen, die vorbereiteten Statement Fields Setter auf seine eigene geschützte (oder öffentliche) Methode zu setzen, anstatt auf ein Lambda innerhalb des jdbcUpdate?

Vielen Dank im Voraus.

Antwort

0

Wir sollten es wahrscheinlich einfacher machen, diese Logik zu überschreiben, vielleicht indem wir sie an eine überschreibbare Methode delegieren.

Contributions are always welcome :).

+0

Ich wünschte, ich hätte die Zeit, das zu tun, ist eigentlich keine große Veränderung, ich denke, es wird mehr Zeit dauern, um die Contributor Guidelines zu lesen, als den Code zu schreiben ... :) – amsmota

+0

Kein Problem - ich öffnete ein [ JIRA-Problem] (https://jira.spring.io/browse/INT-4081), wenn Sie es verfolgen möchten. –