오늘이라도

[VII. AOP] 24. AOP가 필요한 상황 본문

인프런/스프링 입문 (김영한)

[VII. AOP] 24. AOP가 필요한 상황

upcake_ 2022. 1. 13. 15:31
반응형

https://github.com/upcake/hello-spring

강의 링크

 

* 오늘의 단축키 & 기능


1. AOP가 필요한 상황

- 모든 메소드의 호출 시간을 측정하고 싶다면?

- 공통 관심 사항 (cross-cutting concern) vs 핵심 관심 사항 (core concern)

- 회원 가입 시간, 회원 조회 시간을 측정하고 싶다면?

 

1) MemberService 회원 조회 시간 측정 추가

public Long join(Member member) {
    long start = System.currentTimeMillis();

    try {
        validateDuplicateMember(member); //중복 회원 검증
        memberRepository.save(member);
        return member.getId();
    } finally {
        long finish = System.currentTimeMillis();
        long timeMs = finish - start;
        System.out.println("join = " + timeMs + "ms");
    }
}

2) 결과

 

3) 문제

  ① 회원가입, 회원 조회에 시간을 측정하는 기능은 핵심 관심 사항이 아니다.

  ② 시간을 측정하는 로직은 공통 관심 사항이다.

  ③ 시간을 측정하는 로직과 핵심 비즈니스의 로직이 섞여서 유지보수가 어렵다.

  ④ 시간을 측정하는 로직을 별도의 공통 로직으로 만들기 매우 어렵다.

  ⑤ 시간을 측정하는 로직을 변경할 때 모든 로직을 찾아가면서 변경해야 한다.

반응형