Sollte ich @QueryParam oder @BeanParam in JAX-RS verwenden?

8

Ich denke über zwei Optionen für die Handhabung von Anfrage / Anfrage-Parametern nach:

  1. Ordnen Sie einzelne Parameter den entsprechenden Methodenparametern zu:
%Vor%
  1. Ordnen Sie alle Parameter den Eigenschaften einer Java-Bean zu:
%Vor%

Die zweite Option scheint attraktiver zu sein, da sie die Validierungslogik von Eingabeabfrageparametern von der blah -Methode verschiebt und entkoppelt, deren Kernverantwortung darin bestehen sollte, die Validierung zu einem Validator zu verarbeiten und zu delegieren, sollte ein hoher Entkopplungsgrad vorhanden sein ( und auch SOLID-Prinzip, oder?).

Allerdings verwenden die meisten Beispiele, die ich sehe (das existierende Projekt, an dem ich gerade arbeite), nur die erste Option. Ich frage mich, ob es einen Grund gibt, warum die zweite Option nicht weit verbreitet ist? Gibt es irgendwelche Fallstricke? Ist das ein Anti-Muster? Ist das gegen eine Best Practice?

    
user1539343 06.07.2016, 04:50
quelle

1 Antwort

9

Die @BeanParam Annotation wurde in JAX-RS eingeführt 2.0 als Parameter Aggregator (es bedeutet, dass es nicht in JAX-RS 1.0 verwendet werden kann).

Die Idee hinter der @BeanParam Annotation ist zu haben Eine Java-Klasse zum Aggregieren von Parametern, die mit @XxxParam -Anmerkungen versehen sind. Die folgenden @XxxParam -Anmerkungen können verwendet werden, um die Felder einer Parameteraggregatorklasse mit Anmerkungen zu versehen:

Neben Feldern, die mit den @XxxParam Annotationen versehen sind, kann die Parameter Aggregator Klasse Felder enthalten, die mit @Context Annotation. Für eine Liste der Typen, die mit dem @Context Anmerkung, überprüfen Sie diese Antwort .

Ich glaube, es ist nur eine Frage der Bequemlichkeit und der Vorliebe der Entwickler. In vielen Situationen ist eine Klasse zum Aggregieren von Parametern nicht erforderlich. Die Verwendung der @XxxParam -Anmerkungen in Methodenparametern ist sehr praktisch.

Aber wenn Sie Parameter in verschiedenen Methoden wiederverwenden müssen viele Parameter mit @XxxParam Annotationen versehen sind, gehen Sie zu @BeanParam Ansatz.

In Ihrer Frage haben Sie das SOLID-Prinzip erwähnt. Aber vergiss nicht das KISS-Prinzip :)

Beginnen Sie mit den @XxxParam -Anmerkungen in Ihren Methodenparametern und verwenden Sie nicht zu viel @BeanParam Anmerkung, die versucht, ein Problem zu lösen, das Sie nicht haben. Sie können Ihren Code jederzeit umgestalten, um bei Bedarf eine Parameteraggregatorklasse zu erstellen.

    
Cassio Mazzochi Molin 06.07.2016, 09:26
quelle

Tags und Links