【发布时间】:2019-05-03 13:57:05
【问题描述】:
如何屏蔽自动生成的 swagger java 类中的任何参数?
如果手动 getter setter 类,我们可以编辑 toString 方法,但在自动生成的类中,它将在每次构建时生成 swagger pojo 类,那么如何修改由 swagger 自动生成的 toString 方法?
下面是代码
api.yml(通过swagger生成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 类中添加一些日志
log.debug("Enter: {}.{}() with argument[s] = {}", joinPoint.getSignature().getDeclaringTypeName(),
joinPoint.getSignature().getName(), Arrays.toString(joinPoint.getArgs()));
在此日志中joinPoint.getArgs() 有完整的 toString 数据,带有 Id 名称和 nric,这里我想显示 masked nric 而不是直接的 nric 值。
如果它不是自动生成的类,那么我们可以在 toString 方法中添加如下内容。
sb.append("nric: ").append("********").append("\n");
但是在这种自动生成的类的情况下,有没有办法屏蔽任何属性仅用于记录目的?
我已经尝试在 yml 文件中使用如下标志
properties:
id:
type: integer
format: int64
nric:
type: string
format: password
但是这个也没有以预期的方式格式化属性。
【问题讨论】:
标签: java spring-boot swagger spring-aspects