Es gibt zwei Ansätze für diese Verwendung.
Sie können den Setter für das Objekt Benutzername schreiben, um diese Logik zu verarbeiten. Der Nachteil davon ist, dass jeder User-Wert, der durch deinen Setter weitergegeben wird, durch deine String-Massage geht.
public class UserDTO implements Serializable {
@JsonProperty("username")
private String username;
public void setUsername(String username) {
this.username = username.replace("A", "B");
}
public String getUsername() {
return this.username;
}
}
Eine andere Möglichkeit, dies zu tun, ist durch die @JsonCreator
Annotation von Jackson
bereitgestellt wird.
Sie müssen daran denken, dass dies die Deserialisierungsstrategie für alle Objekte wird, die das Objekt UserDTO
verwenden. Aber wenn man bedenkt, dass Sie Unicode auslagern möchten (höchstwahrscheinlich zu einem internen lesbaren Format), würde ich mir vorstellen, dass dies zu Ihrem Anwendungsfall passt.
Also, wenn in Ihrer Methode durchlaufen, wird "ABC" zu "BBC" auflösen. Dies kann in Ihrem Fall der bevorzugte Ansatz sein, da es Ihnen die Flexibilität gibt, das Objekt bei Bedarf anzupassen, ohne Ihren Benutzernamen String Reinigung zu durchlaufen. Objekte, die durch Serialisierung und Konstruktor erstellt wurden, durchlaufen die Bereinigung, aber der Setter nimmt den Wert wie er ist. Es ist einfach, Bit für Logik in Getter und Setter zu bekommen.
Sie möchten einen benutzerdefinierten Deserializer für das UserDTO verwenden. – shinjw
Überprüfen Sie dies: https://www.mkyong.com/spring-mvc/how-to-register-a-servlet-filter-in-spring-mvc/ – Shadov
@Shadov Thx, es möglich, aber weniger auf Klassen. Ich möchte dies für eine Klasse mit Annotation für Feld oder Klassenebene tun – Hamid