2016-08-08 64 views
1

Könnte ich wissen, wie man Spel für .handle() (Aufruf Service Activator) in Spring Integration Java DSL?Spring Integration Java DSL Verwendung von Speel für Service Activator

Der Grund ist, möchte ich Serviceaktivator mit Parameter nennen. Für XML könnte ich Spel ähnlich wie "@ myService.myMethod ('param1', 'param2')" im Ausdruck-Attribut verwenden.

Ich kann nicht etwas ähnliches in SI Java DSL finden

Antwort

1

Es gibt keine .handle(String expression) Variante. Wir fanden es ein wenig überflüssig und entschieden, dass eine Lambda-Variante mit voller Java Zugang besser wäre:

.handle(payload, headers) -> this.myService.myMethod('param1', 'param2')) 

wo this.myService ein @Autowired für Ihren Dienst ist. Alle Parameter können auf ähnliche Weise bestimmt werden.

Lassen Sie uns wissen, warum Sie auf Ausdruckvariante bestehen, wenn es vollen Java Code-Zugang gibt.

+0

In meiner ursprünglichen XML-Config-Version, ich habe einige Ausdruck auf der Grundlage der Nachricht in vorhergehenden Komponenten innerhalb der erstellt werden. Deshalb frage ich, ob Expression während der SI Java DSL Migration unterstützt wird. – user3544765

+0

OK. Warum können Sie nicht dasselbe mit Java-Code erreichen, wenn Sie dieses Lambda-Beispiel verwenden? Sie haben weiterhin vollen Zugriff auf ApplicationContext und so weiter. –

+0

Kein Problem. Ich werde versuchen, der Lambda-Probe dafür zu folgen. – user3544765