우리가 소프트웨어를 만들 때 작성하는 모든 코드는 어떠한 특정 작업을 담당하고 있다.그러나 가끔은 많은 코드에서 공통적으로 필요한 작업들이 있다.메서드가 실행될 때마다 로그를 남긴다거나, 실행 후 결과를 처리하는 작업들 등을 예로 들 수 있겠다. 그런데 이런 공통 작업들을 매 클래스, 매 메소드마다 작성한다면 이건 코드 중복이므로 "클린코드"스럽지 않다.클린코드로 프로그래밍을 하기 위해서 이런 공통 작업들을 한 군데에 모아서 관리할 수 있을까?이런 작업을 도와주는 것이 바로 AOP(Aspect-Oriented Programming)이다!! 우리가 호텔 예약 시스템을 만든다고 가정해보자.이 시스템에는 여러 메서드들이 있고,우리는 메서드가 실행될 때마다 '시작했다'는 메시지를, 실행이 끝나면 '끝났다'는 메..