AOP (Aspect Oriented Programming)

AOP (Aspect Oriented Programming)

관점 지향 프로그래밍이라고도 불리는 AOP는 로직을 핵심, 부가적인 관점을 나누어 각각 모듈화하는 프로그래밍이다.

  • 핵심적인 관점 : 핵심 비즈니스 로직
  • 부가적인 관점 : DB 연결, 로깅, 파일 입출력 등

AOP를 통해 스프링 IoC와 연동하여 중복 코드, 객체 간 복잡도 등에 대한 해결책을 지원한다.

  • 중복되는 코드를 Aspect로 모듈화하여 재사용성을 높일 수 있다.
  • 중복되는 코드들을 **흩어진 관심사(Crosscutting Concerns)**라고 칭한다.
  • 실행 전 후 특정 기능 추가(method의 실행시간 체크 등), response 정보 저장 등

Spring Bean(스프링 빈)에만 적용 가능하며, 접근 제어와 부가 기능 추가를 위해 proxy패턴 기반의 구현체를 사용한다.

AOP 구성 요소

출처 : cloudinary

  • Aspect

    • 중복되는 코드(흩어진 관심사)를 모듈화한 것
  • Target Object

    • Aspect가 적용되는 클래스, 메서드 등의 객체
  • Proxy

    • Aspect와 Target을 연결해주는 클래스
  • Join Point

    • Advice가 적용되는 지점 (실행 전 후 특정 기능 추가와 관련)
  • Point Cut

    • JointPoint를 구체화한 Advice가 실행 될 지점
  • Advice

    • Joint Point, Point Cut에서 실행되는 코드, 실질적인 구현부
  • Weaving

    • Joint Point에 Advice를 적용하는 방법

AOP (Aspect Oriented Programming)

http://inwoo.github.io/09/13/AOP/

Author

Inwoo Jeong

Posted on

2021-09-13

Updated on

2021-10-28

Licensed under

You need to set install_url to use ShareThis. Please set it in _config.yml.

댓글