카테고리 없음
[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();
}
}
}
}