[Spring 입문] 6. AOP

강은서·2022년 7월 13일
0

Spring

목록 보기
7/11
post-thumbnail

AOP(Aspect Oriented Programming)

공통 관심사항과 핵심 관심 사항을 분리하는 프로그래밍
AOP를 사용하지 않으면, MemberService 모든 메소드에 회원 조회 시간 측정 코드를 추가해야 한다. 하지만, 이를 공통 관심사항으로 분리하면, 원하는 메소드에서만 호출에서 사용할 수 있다.

  • AOP 적용 전 의존 관계
    memberController -> memberService
    AOP 적용 후 의존 관계
    memberController -> 프록시(memberService) -> 실제 memberService
    - 프록시 memberService 는 가짜 스프링 빈으로 joinPoint.proceed()를 통해서 실제 memberService를 호출한다.

  • 시간 측정 AOP 등록

//Spring Config에 등록하는 것이 선호되고 있다. 
@Component
@Aspect

public class TimeTraceAop{
	@Around("execution(* hello.hellospring..*(..))")
    //공통 관심사를 어는 곳에 적용하는지에 대한 path 설정
    
    long start = System.currentTimeMillis();
    
    System.out.prinln("START: " + joinPoint.toString());
    try{
    	return joinPoint.proceed();
    }finally{
    	long finish = System.currentTimeMillis();
        long timeMs = finish-start;
        
        System.out.println("END: "+ joinPoint.toString()+" " + timeMs+ "ms");
        }
    }
}

다음 글은 인프런 김영한 강사님의 스프링 강의 복습용입니다 :)

0개의 댓글