Wie bind Anfrage Parameter ohne Setter?

8

Ich habe einen einfachen Controller mit einem GET-Handler, der ein Objekt akzeptiert, um Request-Parameter zu binden:

%Vor%

Die RequestParams ist eine einfache POJO-Klasse:

%Vor%

Alles funktioniert gut, aber ich möchte die Setter loswerden, um das Objekt für den öffentlichen Gebrauch unveränderlich zu machen. In der Dokumentation für @RequestMapping handler-Methode, lesen wir das Mögliche gültige Methodenargumente sind:

  

Befehls- oder Formularobjekte, um Anforderungs-Parameter an Bean-Eigenschaften zu binden   (über Setter) oder direkt zu Feldern

Ist es möglich, die Standard-Spring-Boot-Konfiguration irgendwie zu überschreiben, so dass Request-Parameter über Reflektion an Klasseneigenschaften gebunden sind und nicht an Setter?

    
Daniel Olszewski 30.11.2016, 19:04
quelle

2 Antworten

2

Spring Boot-Bibliotheken hängen von Jackson ab ( spring-boot-starter-web & lt; - spring-boot-starter-json & lt; - jackson libraries ), also kann man seine Anmerkungen verwenden, um json-Bindungen zu steuern.

@JsonCreator -annotated Konstruktoren oder statische Methoden erlauben Objekte ohne explizite Setter zu instanziieren:

%Vor%

Dokumentation

jihor 29.06.2017 13:06
quelle
0

Ich glaube nicht, dass Sie irgendeine Konfiguration im Springboot ändern müssen. Es scheint, dass der Spring-Container versucht, Werte unter Verwendung von Setter zu setzen, falls verfügbar, andernfalls verwendet er das Feld direkt. Können Sie also bitte den Umfang Ihrer Objekte in der RequestParam-Klasse in public ändern.

%Vor%

Ich habe so etwas nicht benutzt, aber es scheint, es sollte funktionieren. Lassen Sie uns wissen, was passiert ist.

    
Avinash 01.12.2016 07:03
quelle