카테고리 없음

[spring boot] aop를 이용해서 controller 들어오기 오기전에 validation 하기

syppjava 2021. 3. 18. 10:45

controller 이후에 파라미터 검증하면 소스가 지저분해진다.

 

aop 를 이용해서 controller 에 들어오기전에 검증하자.

 

 

 

 

 

Validator 인터페이스 생성

(파라미터 객체들이 Validator 를 구현한다)

public interface Validator {
  void verify();
}

 

TestRequestParam 생성

Validator 인터페이스를 구현, verify() 함수안에 검증코드를 넣는다.

@Getter
@Setter
public class TestRequestParam implements Validator{

  private String param1;
  private int param2;

  @Override
  public void verify() {
    if(param1 == null) throw new RuntimeException("param1 is null");
    if(param2 <= 0) throw new RuntimeException("param2 is zero");
  }
}

 

Verify AOP 생성

- 컨트롤러에 들어오기 전에 실행되는 aop 를 생성한다.

- 컨트롤러로 넘어가는 파라미터를 for문을 돌며 Validator 를 구현한 객체가 있는지 검사하고 실행한다.

@Aspect
@Component
public class VerifyAspect {

  @Before("execution(* kr.co.my.controller.*.*(..))")
  public void before(JoinPoint joinPoint) {

    for (Object param : joinPoint.getArgs()) {
      if (param instanceof Validator) {
        ((Validator) param).verify();
      }
    }

  }
}