Как замаскировать любой параметр в автоматически сгенерированном Java-классе Swagger?
Если класс с установщиком вручную мы можем редактировать метод toString, но в автоматически сгенерированном классе он будет генерировать Swagger Pojo-класс в каждой сборке, так как изменить метод toString, который генерируется автоматическичванством?
Ниже приведен код
api.yml (который генерирует класс POJO через сваггер)
InsuredDTO:
type: object
properties:
id:
type: integer
format: int64
name:
type: string
nric:
type: string
toString Метод внутри автоматического генерирования класса POJO
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append("class InsuredDTO {\n");
sb.append(" id: ").append(toIndentedString(id)).append("\n");
sb.append(" name: ").append(toIndentedString(name)).append("\n");
sb.append(" nric: ").append(toIndentedString(nric)).append("\n");
sb.append("}");
return sb.toString();
}
Добавление нескольких журналов внутри LoggingAspect class
log.debug("Enter: {}.{}() with argument[s] = {}", joinPoint.getSignature().getDeclaringTypeName(),
joinPoint.getSignature().getName(), Arrays.toString(joinPoint.getArgs()));
В этом журнале joinPoint.getArgs()
имеет полные данные toString с именем Idи nric, здесь я хочу отобразить маскированный nric вместо прямого nric value.
Если это не автоматически сгенерированный класс, тогда мы можем добавить что-то вроде ниже в toStringМетод.
sb.append("nric: ").append("********").append("\n");
Но в этом случае автоматически сгенерированный класс есть ли способ замаскировать любое свойство только для целей ведения журнала?
Я пробовал с флагом в файле yml, как показано ниже
properties:
id:
type: integer
format: int64
nric:
type: string
format: password
Но этот также не форматирует свойство ожидаемым образом.