Java 如何以编程方式启动Spring验证?

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

我正在构建一个简单的REST服务,但问题是我必须记录输入

@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


我也乐于接受解决我的问题的方法

如果您愿意接受一般的日志记录请求,也许会有所帮助。