김영한 강사님 강의를 들으며 정리한 내용입니다. 공부를 하며 수정해 나갈 예정입니다.
https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%EC%9E%85%EB%AC%B8-%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8
예를들어 1000개의 메소드 호출시간을 알고싶다면 1000개의 메소드 모두에 시간측정 코드를 붙여야 한다. 하지만 AOP를 이용하면 간단한 관리로 한번에 수정 가능하다.
AOP는 관점지향 프로그래밍이다. 공통 관심사항과 핵심 관심사항을 분리하는 것이다. 위와 같은 상황에선 호출시간 측정 로직은 공통 관심사항이다.
이전엔 시간측정 로직을 메서드에 전부 붙였지만 AOP를 사용하면 시간측정 로직을 한곳(TimeTraceAop)에 다 모으고 원하는 곳에 적용하는 것이다.
AOP적용 전
Controller가 Service를 호출할 때 의존하고 있는 모습이다.
AOP적용 후
가짜 spring bean을 세워둔다. 가짜 spring bean이 끝나면 실제를 호출한다.