1 回答
TA贡献1848条经验 获得超2个赞
您可以像这样使用@JsonAnySetter:
1-定义一个 BaseRequestDTO 类:
public abstract class BaseRequestDTO {
@JsonAnySetter
public Map<String, Object> additionalData=new HashMap<>();
}
该字段additionalData将保存不在 DTO 中的所有 json 字段
2-让你的 d 扩展它,例如:
class JwtRequest extends BaseRequestDTO{
public String username;
public string password;
}
3-写一个方面来应用你的“严厉”策略:
@Aspect
@Component
public class ControllerArgsValidator {
@Pointcut("within(@org.springframework.web.bind.annotation.RestController *)")
public void restController() {
}
@Pointcut("within(@org.springframework.stereotype.Controller *)")
public void controller() {
}
@Around("controller() || restController()")
public Object validate(ProceedingJoinPoint point) throws Throwable {
Object[] args = point.getArgs();
for (Object arg : args) {
if (arg instanceof BaseRequestDTO) {
if((BaseRequestDTO) arg).additionalData.isEmpty())
//do what ever;
}
}
return point.proceed();
}
添加回答
举报