Ich habe eine einfache Steuerung mit einem GET-Handler, die ein Objekt akzeptiert Anforderungsparameter zu binden:Wie bind Anfrage Parameter ohne Setter?
@RestController
@RequestMapping("/test")
public class SampleController {
@GetMapping
public SomeResponse find(RequestParams params) {
// some code
}
}
Die RequestParams
ist eine einfache POJO Klasse:
public class RequestParams {
private String param1;
private String param2;
// constructor, getter, and setters
}
Everthing funktioniert gut, aber ich möchte um die Setter loszuwerden, um das Objekt für den öffentlichen Gebrauch unveränderlich zu machen. Im documentation für @RequestMapping
-Handler-Methode lesen wir, dass möglich gültige Methode Argumente sind:
zu bindenBefehl oder Formularobjekte Anforderungsparameter zu Bean-Eigenschaften (über Setter) oder direkt an Felder
Ist es möglich, die Standard-Spring-Boot-Konfiguration irgendwie zu überschreiben, so dass Request-Parameter mit Reflektion und nicht mit Setter an Klasseneigenschaften gebunden sind?
Wenn der Bereich der Felder in "public" geändert wird und die Setter entfernt werden, sind die Anforderungsparameter leider nicht an das Objekt gebunden. Auch wenn mein Ziel darin besteht, das Objekt zumindest für den öffentlichen Gebrauch unveränderlich zu halten, und die Veröffentlichung von Feldern würde die Dinge nur noch verschlimmern. –