복붙노트

[SPRING] 스프링 컨트롤러 메소드에서 @ Valid / @ Validated 주석 이전에 내 Spring 요소를 실행하려면 어떻게해야합니까?

SPRING

스프링 컨트롤러 메소드에서 @ Valid / @ Validated 주석 이전에 내 Spring 요소를 실행하려면 어떻게해야합니까?

나는이 서비스 / 컨트롤러 방법을 가지고있다 :

public ResponseEntity<PolicyDTO> addPolicy(@Valid @RequestBody PolicyDTO policy)
        throws InternalServerException, BadRequestException {
    log.debug("Adding a new policy");
}

메소드 params의 @Valid 주석을 확인합니다.

이 컨트롤러에 대해 우리는 다음 aspect 클래스를 정의했다 :

@Aspect
@Component
public class BackwardsCompatibilityHandler {
@Around("execution(* com.company.PolicyController.addPolicy(..))")
public Object ControllerMethod(JoinPoint jp) 
{
    // DO Code before and after the method call
}

이 aspect / proxy의 주된 이유는 메소드 호출을 가로 채고 입력 매개 변수 / 리턴 된 결과에 대해 사전 / 사후 처리를 수행하는 것입니다.

우리가 직면 한 주된 문제는 코드가 실제로 실행되기 전과 후에 aspect가 처리되기 전에 @Valid 어노테이션이 처리된다는 것이다.

AOP 코드 내에서 유효성 검사를 어떻게 수행 할 수 있는지에 대한 아이디어가 있습니까? 메서드 내에서 수동으로 유효성 검사기를 호출하여이 작업을 수행하는 방법이 있지만 기존 코드를 너무 많이 터치하지 않으려 고합니다.이 외에 다른 아이디어가 있으면 ...

지금 실행 순서는 다음과 같습니다.

그리고 우리는 더 많은 것을 원합니다 (우리 코드와 유효 주석).

컴파일러 오류 등을 건너 뛰십시오.이 코드는 데모 목적으로 만 사용됩니다. 실제 코드가 아닙니다. :)

해결법

    from https://stackoverflow.com/questions/39271035/how-do-i-get-my-spring-aspects-to-execute-before-valid-validated-annotation-on by cc-by-sa and MIT license