스프링은 자체적으로 프록시 패턴을 통해 비즈니스 로직과 공통 코드를 분리하는 AOP를 제공하고 있습니다. 관점지향 프로그래밍이라는 개념아래 서비스를 호출할 때 AOP의 경우 프록시 역할을 하는 객체에 의해 서비스가 호출되게 됩니다. 특정 클래스, 메소드, 어노테이션 등을 타겟으로 삼아 AOP에 쌓여진 코드는 직접 호출이 아닌 대리기사인 프록시 객체에 의해서 호출되게 되는데... 그 과정을 코드로 살펴보겠습니다. 프로젝트 구성 - AService, BService는 비즈니스 코드 역할을 할 서비스 클래스입니다. 실제 실무에서는 interface를 구현하고 있는 형태가 대부분일 것입니다. - TestAnnotation은 커스텀으로 어노테이션을 만든 것입니다. 커스텀 어노테이션을 구현하는 방법은 다음의 내용을..