더북(TheBook)

2.10 인터셉터

 

대부분 애플리케이션에는 핵심 구현 로직에 기분 좋게 딱 들어맞지 않으면서 설계/구현 단계에서 깔끔하게 분리하기 어려운 횡단 관심사(cross-cutting concerns)가 있습니다. 횡단 관심사는 대개 코드 중복 및 상호 의존체를 일으키는 근원이며, 다른 애플리케이션 영역에 영향을 미쳐 시스템 확장성을 떨어뜨립니다. 이러한 핵심이 아닌 주변 관심사를 인터셉터로 구현하면 핵심 로직에서 분리할 수 있습니다. 구현 코드를 논리적으로 분리한 상태에서 핵심 메서드 호출을 가로챈 다음 어떤 로직을 적용하는 것입니다.

인터셉터를 구현하려면 @Interceptors 뒤에 횡단 관심사에 해당하는 클래스명을 적습니다. 코드 2-4에서 setValue 메서드를 호출하면 로거 인터셉터가 제일 먼저 실행 흐름을 가로챕니다.

코드 2-4 로거 인터셉터가 가로챈 핵심 메서드

@Interceptors(LoggerInterceptor.class)
public void setValues(Integer value, String name) {
    this.value = value;
    this.name = name;
}

로거 인터셉터는 자신이 가로챈 메서드 파라미터를 꺼내 공통 로직을 수행한 후, 이 메서드가 원래 하려던 일을 끝까지 마칠 수 있게 제어권을 돌려줍니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.