Code: Select all
@DecryptGetter
private String sensitiveData;
< /code>
Das würde Methoden erzeugen wie: < /p>
public void setSensitiveData(String data) {
this.sensitiveData = CryptoUtils.encrypt(data);
}
public String getSensitiveData() {
return CryptoUtils.decrypt(this.sensitiveData);
}
< /code>
Der Schlüsselunterschied von Lombok besteht darin, dass diese Methoden eine benutzerdefinierte statische Logik aufrufen sollten (Cryptils.encrypt () /decrypt ()), anstatt nur Accessors.@Retention(RetentionPolicy.SOURCE)
@Target(ElementType.FIELD)
public @interface EncryptSetter {}
@Retention(RetentionPolicy.SOURCE)
@Target(ElementType.FIELD)
public @interface DecryptGetter {}
Ist es möglich, eine benutzerdefinierte Annotation wie @encryptsetter zu erstellen, die eine Methode in derselben Klasse erzeugt (wie Lombok)? /> AST-Modifikation (z. B. Javac-Plugins)?
Lomboks Erweiterungs-APIs? notwendig
bevorzugen leichte und wartbare Lösungen < /p < /p>