[스프링 입문] AOP

chaen-ing·2023년 8월 17일
0

Spring 공부

목록 보기
3/13

AOP가 필요한 상황

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

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");
} 
}

이런식으로 모든 로직을 변경해줘야함

하지만 시간을 측정하는 로직은 핵심 관심 사항이 아닌 공통 관심 사항

또한 유지보수도 어려움

→ 만약 이것을 모두 ms가 아닌 s단위로 바꿔야한다면 굉장히 많은 수정이 필요함

AOP 적용

AOP : Aspect Oriented Programming

→ 공통 관심 사항과 핵심 관심 사항을 분리

장점

핵심 관심사항 깔끔하게 유지가능

시간 측정 로직을 별도 로직으로 만듦

원하는 조건만 선택가능

프록시를 사용하여 가짜 스프링빈을 생성하고, joinPoint.proceed()후에 실제 memberService에 접근


인프런 스프링 입문 - 김영한 강의를 듣고 정리한 내용입니다

profile
💻 개발 공부 기록장

1개의 댓글

comment-user-thumbnail
2023년 8월 17일

좋은 글 감사합니다. 자주 올게요 :)

답글 달기

관련 채용 정보