스프링 입문 - AOP가 필요한 상황
반응형
AOP
AOP가 필요한 상황
- 모든 메서드의 호출 시간을 측정하고 싶다면?
- 공통 관심 사항(cross-cutting concern) vs 핵심 관심 사항(core concern)
- 회원 가입 시간, 회원 조회 시간을 측정하고 싶다면?
우선, 제일 간단한 방법으로,
join() 메서드의 실행시간을 측정해보자.
System.currentTimeMillis();
이것을 사용하면 밀리세컨드로 받을 수 있다.
그리고 로직이 끝날 때, 시간을 찍어야 하는데, 예외가 터져도 찍어야 하므로,
try-finally를 사용했다.
실행시간은 finish - start 로 구해서 찍어주었다.
통합테스트로 돌려보았더니,
이렇게 찍힌다.
모든 메서드의 실행시간을 측정해야 하므로, findMembers() 에도 동일하게 작성해주자.
위와같이 작성해주었다.
findMembers는 서버를 직접돌려서 확인해보자.
서버를 돌리고, localhost:8080 에서 회원 목록을 누르면,
로그에 findMembers의 실행시간이 찍힐 것이다.
이렇게 찍혔다. 두번째하니까 속도가 조금 빨라졌다. (처음에 올리면 클래스 메타데이터 등등을 로딩하느라 좀더 오래걸린다)
이렇게 작성하면 여러가지 문제가 있다.
문제
- 회원 가입, 회원 조회에 시간을 측정하는 기능은 핵심 관심 사항이 아니다.
- 시간을 측정하는 로직은 공통 관심 사항이다.
- 시간을 측정하는 로직과 핵심 비즈니스의 로직이 섞여서 유지보수가 어렵다.
- 시간을 측정하는 로직을 별도의 공통 로직으로 만들기 매우 어렵다.
- 시간을 측정하는 로직을 변경할 때 모든 로직을 찾아가면서 변경해야 한다.
따라서 이러한 상황에는 AOP를 적용해서
공통 관심사항(cross-cutting concern)과 핵심 관심 사항(core concern)을 분리해줘야 한다.
다음 시간에는 AOP의 적용에 대해 알아보자.
반응형
'Spring' 카테고리의 다른 글
스프링 기본 - 객체 지향 설계와 스프링 / 프로젝트 생성 (0) | 2022.05.24 |
---|---|
스프링 입문 - AOP 적용 (0) | 2022.05.23 |
스프링 입문 - 스프링 데이터 JPA (0) | 2022.05.23 |
스프링 입문 - JPA (0) | 2022.05.22 |
스프링 입문 - 스프링 JdbcTemplate (0) | 2022.05.22 |
댓글
이 글 공유하기
다른 글
-
스프링 기본 - 객체 지향 설계와 스프링 / 프로젝트 생성
스프링 기본 - 객체 지향 설계와 스프링 / 프로젝트 생성
2022.05.24 -
스프링 입문 - AOP 적용
스프링 입문 - AOP 적용
2022.05.23 -
스프링 입문 - 스프링 데이터 JPA
스프링 입문 - 스프링 데이터 JPA
2022.05.23 -
스프링 입문 - JPA
스프링 입문 - JPA
2022.05.22