스프링 AOP (2) 썸네일형 리스트형 스프링 AOP 내부호출 문제와 한계 이번 포스팅에서는 스프링 AOP 를 적용했을 때 발생할 수 있는 문제와 한계점에 대해서 설명하고 스프링은 이러한 문제를 어떻게 해결했는지를 살펴본다. 대표적인 두 가지 문제는 다음과같다. 내부호출이 일어났을 때 프록시가 적용되지 않는 상황 JDK 동적 프록시를 사용했을 때 타입캐스팅이나 의존관계 주입에서 오류가 발생할 수 있다. 이 두 가지 문제 상황을 살펴보자. 프록시와 내부호출 문제 먼저 아래의 코드를 살펴보자. public class CallServiceV0 { public void external(){ log.info("call external"); internal(); //내부 메서드 호출 } public void internal() { log.info("call internal"); } } @.. 더보기 스프링 AOP 스프링 AOP 개념 애플리케이션의 실행로직은 크게 핵심기능과 부가기능으로 나뉘어진다. 이 부가기능을 보통 횡단관심사(cross-cutting-concerns)으로 부른다. 예를 들어 주문이라는 기능을 구현하기 위해 orderService라는 클래스를 만들었을 때 주문 로직은 핵심기능이다. 여기에 로그나 트랜잭션 기능을 추가하는 것은 부가기능을 더하는 것이라 볼 수 있다. 이 부가기능을 적용하는 것이 간단한 문제일까? 이 질문에 대해 여러 상황을 생각해보자. 우리는 부가기능이라고 하는 기능을 여러 핵심기능에 적용할 수 있을 것이다. 100개의 핵심기능에 로그나 트랜잭션을 추가하려고 한다면 쉽게 생각하면 100개의 부가기능로직을 각각의 소스코드에 추가해주어야 한다. 부가기능이 변경되는 상황이 발생하면 어떻게.. 더보기 이전 1 다음