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();
}
添加回答
舉報