김영한님의 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술을 보면서 공부한 내용입니다.
aop 패키지를 만들어 TimeTraceAop
클래스를 생성한다.
@Aspect // AOP를 가능하게 하는 어노테이션
@Component // 스프링 빈으로 등록하는 어노테이션
public class TimeTraceAop {
@Around("execution(* hello.hellospring..*(..))") // 패키지 하위에 있는 것은 모두 적용
public Object execut(ProceedingJoinPoint joinPoint) throws Throwable{
long start = System.currentTimeMillis();
System.out.println("START : " + joinPoint.toString());
try{
return joinPoint.proceed();
} finally {
long finish = System.currentTimeMillis();
long timeMs = finish - start;
System.out.println("END : " + joinPoint.toString() + " " + timeMs + "ms");
}
}
💡 @Around : 지정된 패턴에 해당하는 메소드의 실행되기 전, 실행된 후 모두에서 동작시키는 어노테이션으로 메소드의 반환 값은 Object여야 한다.
*
: 모든 것..
: 0개 이상hellospring
하위에 있는 것은 모두 적용AOP 적용 전 의존관계
AOP 적용 후 의존관계
→ Proxy가 생성됨.
AOP 적용 전 전체 그림
AOP 적용 후 전체 그림
@Autowired
public MemberController(MemberService memberService) {
this.memberService = memberService;
System.out.println("memberService : " + memberService.getClass());
}