Java 如何以编程方式启动Spring验证?
我正在构建一个简单的REST服务,但问题是我必须记录输入Java 如何以编程方式启动Spring验证?,java,spring-restcontroller,Java,Spring Restcontroller,我正在构建一个简单的REST服务,但问题是我必须记录输入 @RestController @RequestMapping("/") public class MyController { private final Logger logger = Logger.getLogger(this.getClass()); @GetMapping("/get") public String get(@Valid @RequestBody
@RestController
@RequestMapping("/")
public class MyController {
private final Logger logger = Logger.getLogger(this.getClass());
@GetMapping("/get")
public String get(@Valid @RequestBody Person person) {
logger.info("received input: " +person.toString());
// but doesn't log if person is not valid
// although ControllerAdvice can catch the exception, it can't retrieve Person (I need to log it)
...
}
}
即使person无效或无法解析,我也需要登录,所以我将请求主体更改为String
@GetMapping("/get")
public String get(@RequestBody String personString) {
ObjectMapper mapper = new ObjectMapper();
try {
Person person = mapper.readValue(personString, Person.class);
validatePerson(person); // this doesn't work
} catch (JsonProcessingException e1) {
logger.debug("malformed json: " +personString)
} catch (IOException e2) {
logger.debug("input can't be read");
} catch (MethodArgumentNotValidException e3){
logger.debug("validation failed" +person)
}
//
logger.info("received input: " +person.toString());
...
}
理想情况下,我想让这项工作
public boolean validatePerson(@Valid Person person){
return true;
}
因为我已经有一个ControllerAdvice可以捕获MethodArgumentNotValidException
我也乐于接受解决我的问题的方法如果您愿意接受一般的日志记录请求,也许会有所帮助。