You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
공통 관심 사항(cross-cutting concern) vs 핵심 관심 사항(core concern)
공통 관심 사항은 보통 로깅, 메소드 호출 시간, 보완 등등에 쓰인다.
만약 메소드 측정시간을 알고싶다. 그러면 아래의 그림과 같이 모든 메소드에 추가하는 방법이 있다. 하지만 이 방법은 정말 위험하다.
/** * 회원가입 **/publicLongjoin(Membermember) {
//같은 이름이 있는 중복 회원 x//null이 아니라 어떤 값이 있으면 로직이 동작한다. (Optional이라 가능한 일이다.)longstart = System.currentTimeMillis();
try {
validateDuplicateMember(member); //중복 회원 검증memberRepository.save(member);
returnmember.getId();
} finally {
longfinish = System.currentTimeMillis();
longtimeMs = finish - start;
System.out.println("join = " + timeMs + "ms");
}
}
위와 같이 하나하나 다 넣어줄 경우 문제가 생기는데
회원가입, 회원 조회에 시간을 측정하는 기능은 핵심 관심 사항이 아니다. 하지만 시간을 측정하는 로직은 공통관심 사항이다. 그와 반대로 시간을 측정하는 로직은 공통 관심 사항이다.
핵심 비즈니스의 로직에 시간을 측정하는 로직이 섞이게 된다면 유지보수가 어렵다.(변경할려면 하나씩 다 찾아서 변경해줘야함)
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
Uh oh!
There was an error while loading. Please reload this page.
-
7.AOP
1️⃣ AOP가 필요한 상황
공통 관심 사항(cross-cutting concern) vs 핵심 관심 사항(core concern)
공통 관심 사항은 보통 로깅, 메소드 호출 시간, 보완 등등에 쓰인다.만약 메소드 측정시간을 알고싶다. 그러면 아래의 그림과 같이 모든 메소드에 추가하는 방법이 있다. 하지만 이 방법은 정말 위험하다.
위와 같이 하나하나 다 넣어줄 경우 문제가 생기는데
회원가입, 회원 조회에 시간을 측정하는 기능은 핵심 관심 사항이 아니다. 하지만 시간을 측정하는 로직은 공통관심 사항이다. 그와 반대로 시간을 측정하는 로직은 공통 관심 사항이다.
핵심 비즈니스의 로직에 시간을 측정하는 로직이 섞이게 된다면 유지보수가 어렵다.(변경할려면 하나씩 다 찾아서 변경해줘야함)
2️⃣ AOP적용
Beta Was this translation helpful? Give feedback.
All reactions