[스프링] 6. AOP

지니🧸·2023년 1월 27일
0

Spring Boot & JPA

목록 보기
35/35

본 문서는 인프런의 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 (김영한) 강의를 공부하며 작성한 개인 노트입니다.

🔫 AOP가 필요한 상황

AOP가 필요한 상황

  • 모든 메소드의 호출 시간 측정
  • 공통 관심 사항(cross-cutting concern) vs. 핵심 관심 사항(core concern)
    • 공통 관심 사항: 시간을 측정하는 로직
    • 핵심 관심 사항: 비즈니스 로직 등

문제

try-catch 형태로 인해 시간을 측정하는 로직(공통 관심 사항)과 비즈니스 로직(핵심 관심 사항)이 섞여 유지보수가 어려움

  • 시간을 측정하는 로직을 별도의 공통 로직으로 만들기 힘듬
  • 코드 변경 시 모든 로직을 찾아가며 변경해야 함

💇🏻‍♀️ AOP 적용

AOP: Aspect Oriented Programming

  • 공통관심사항과 핵심관심사항의 분리
  • 시간측정로직을 한 곳에 모두 모으고 원하는 곳에 적용

implementation

  1. src/main/java/hello.hellospring/aop 패키지 생성
  2. aop 내 TimeTraceAop 파일 생성
  3. 클래스에 @Aspect 에노테이션 적용
  4. 클래스 안에 execute 메소드 구현 > @Around 에노테이션 적용
  5. SpringConfig에 bean 등록 (클래스에 @Component으로 대체 가능)

AOP 장점

  • 핵심관심사항과 공통관심사항의 분리
  • 시간 측정 로직을 별도로 분리
  • 핵심관심사항은 깔끔하게 유지
  • 유지보수가 용이
  • 원하는 대상에만 적용 가능
profile
우당탕탕

0개의 댓글