Ich denke über zwei Optionen für die Handhabung von Anfrage / Anfrage-Parametern nach:
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?
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.