AOP를 통해서 중복 코드 제거, 효율적인 유지보수, 높은 생산성, 재활용성 극대화, 변화 수용 용이 등의 이점을 얻을 수 있다.
위 그림에서 처럼 계좌이체, 입출금, 이자계산이라는 로직을 처리할 때, 모두 똑같이 로깅, 보안, 트랜잭션을 처리해줘야한다.
따라서 모든 로직에 똑같은 코드가 반복적으로 삽입될 수 밖에 없다.
하지만 AOP에서는 로깅, 보안, 트랜잭션이라는 공통 관심(Aspect)을 따로 빼내어 계좌이체, 입출금, 이자계산이라는 핵심 관심에 횡단으로 삽입해 주는 것이다.
이렇게 각 객체별로 처리했던 것을 각 관점별로 외부에서 접근을 하는것이 AOP의 핵심이다.
즉 개발자는 계좌이체, 입출금, 이자계산과 같은 핵심 기능을 만들고, 공통적인 관심 기능(로깅, 보안, 트랜잭션)을 처리하는 모듈을 분리해서 개발한 후, 필요한 시점에 자동으로 공통적인 관심 기능이 삽입되도록 하는것이다.