AOP에 대하여

minisoo·2023년 11월 26일
0

AOP

Aspect Oriented Programming의 약자로 관점 지향 프로그래밍이라고도 한다
관점 지향 프로그래밍은 핵심적인 기능(비즈니스 로직)과 부가적인 기능(데이터베이스 연결, 로깅 등)을 분리하여 각 관점을 기준으로 모듈화 하는 방식

예를 들어 모든 함수에 공통적으로 사용하고 있는 로깅 기능이 수정이 필요한 경우 모든 함수에서 기능을 수정해주어야 하기 때문에 유지보수면에서 효율적이지 않고, 코드의 중복이 발생하게 된다

이러한 문제점을 해결하기 위해 나온 기술이 AOP
각 객체별로 처리했던 것을 각 관점별로 외부에서 접근 하는 것이 AOP의 핵심!

AOP 용어

  • target
    • 부가기능을 부여할 대상
    • 핵심기능을 담은 클래스
  • advice
    • 부가기능을 담은 구현체
  • point cut
    • 부가기능이 적용될 대상을 선정하는 방법
  • join point
    • advice가 적용될 수 있는 위치
    • 스프링에서는 메소드 조인포인트만 제공
  • aspect
    • 부가기능을 정의한 advice와 advice를 어디에 적용할지 결정하는 point cut의 조합으로 구성
    • 보통 싱글톤 형태의 오브젝트로 존재
  • proxy
    • target을 감싸서 target의 요청을 대신 받아주는 객체

AOP 적용해보기

  1. gradle 의존성 추가
implementation 'org.springframework.boot:spring-boot-starter-aop'
  1. 클래스 생성
    aop -> Logging 클래스 추가

  2. 대상 선정 및 구현체 작성

  3. 로그 확인


[참고자료]

AOP란
AOP 예제

profile
코딩하는 돌멩이 👻

0개의 댓글