스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 - (AOP)
- 만약 모든 메서드 실행 시간을 알고 싶다고 한다면 모든 메서드에 시작과 끝에 시간 측정 로직이 들어가야 한다. 하지만 일일히 코드 작성하긴 어렵다.

이 문제를 해결하기 위해서 AOP를 사용한다.
AOP는 공통 관심사항 vs 핵심 관심 사항 분리 하는 것이다.
- AOP 파일 만들기

AOP를 만들기 위해선 @Aspect와 @Around가 필요하다. hello.hellospring 패캐지 경로의 모든 메서드에 적용하겠다는 의미이다. 뒤에는 SpringConfig를 제외하는 것인데 만약 제외를 하지 않으면 SpringConfig도 참조되어 순환 참조 에러가 발생한다.
try구문에 joinPoint.proceed가 있는데 이 때 실제 메소드가 실행된다.

AOP 적용 전에는 @Autowired로 의존성 연결하여 서로 주입되는데
AOP를 적용하면 프록시라는 가짜를 만들어 의존성 주입이 된다. 이렇게 가능한 이유가 DI때문인데 helloController에서는 new해서 만들지 않고 받으려고 한다. 그 때 프록시로 만든 가짜를 만들어 받아서 진행하기 때문이다.