2017-11-26 1 views
0

ich eine serviceActivator definiert:wählen überladene Methode in Service-Aktivator (Frühlings-Integration)

<integration:service-activator input-channel="sampleChannel" 
ref="sampleImpl" method="remove"/> 

In SampleImpl, Es gibt zwei überladene Methode entfernen:

public Object remove(Object payload) { 
    //some code ... 
    return payload; 
} 

public void remove() { 
    //some code ... 
} 

In Methode Eigenschaft, ich möchte Wählen Sie remove-Methode ohne Argument (remove()). und in irgendeinem Szenario möchte ich Remove-Methode mit Argument (remove (Object Payload)) auswählen. Ich habe immer Payload als Argument gefunden, um die Methode zu entfernen, also wie kann ich nur remove() auswählen?

Antwort

1

Es ist unmöglich mit XML DSL. Sie müssen einen von ihnen umbenennen oder Wrapper-Dienste schreiben. Das ist vergleichbar mit der Auswahl von Setter in Java Beans. Wenn Sie also eine andere Logik mit verschiedenen Setter verwenden möchten, haben Sie sie mit verschiedenen Wörtern benannt.

+0

Es bedeutet, dass ich überladene Methoden in Serviceaktivator nicht verwenden kann. Recht ? – Hamid

+0

Richtig, du kannst nicht. Der mit einem Argument wird anhand des Namens ausgewählt. Nun, dieser ohne Argumente wird ebenfalls berücksichtigt, aber da die Anforderungsnachricht immer eine Nutzlast hat, wählt das Framework niemals die Methode ohne Argumente aus –

Verwandte Themen