AOP가 처음에 공부를 할때 용어를 보면서 많은 개발자들이 어렵다고 느낀다.
하지만, 예제를 보고 설명을 들으면 이해가 잘되니 예제를 먼저 보도록 하자.
상사가 들어와서 현재까지 짠 코드를 모두 시간측정을 하도록 해라. 그래서 모든 메서드에 시간 측정을 넣기 시작했다. 각각 몇초가 나오는지 코드를 완성했는데, 상사가 다시 와서 아 초단위로 보니까 잘 모르겠네 밀리세컨으로 해라. 해서 다시 전부 밀리세컨으로 바꾸는 그런 상황을 생각해본다.
회원가입, 회원 조회에 시간을 측정하는 기능은 핵심 관심 사항이 아니다.
시간을 측정하는 로직은 공통 관심 사항이다.
시간을 측정하는 로직과 핵심 비즈니스의 로직이 섞여서 유지보수가 어렵다.
시간을 측정하는 로직을 별도의 공통 로직으로 만들기 매우 어렵다.
시간을 측정하는 로직을 변경할 때 모든 로직을 찾아가면서 변경해야 한다.
AOP: Aspect Oriented Programming
공통 관심 사항(cross-cutting concern) vs 핵심 관심 사항(core concern) 분리
hello.hellospring 패키지 하위에 전부 확인하고 싶다면,
원래 스프링이 위의 그림처럼 진행한다고 하면 AOP를 적용할 경우, 해당 클래스를 가짜로 생성한 후 이를 통해 AOP가 실행된 후, 진짜 클래스가 실행되는 식으로 진행된다.
인프런 홈페이지 - https://www.inflearn.com/
강의 제목 - 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술