본문 바로가기
Study/Spring

[Spring] 3. AOP

by 나아가는 2023. 9. 24.
반응형

AOP(Aspect-Orented Programming) 이란?

관점(Aspect)지향 프로그래밍

 문제를 바라보는 관점을 기준으로 프로그래밍 하는 기법을 말한다.

기본적인 개념은 공통 관심 사항을 구현한 핵심 로직을 구현한 코드 안에 삽입하는 것이다.

위 그림을 MVC 에 적용시켜 보자면

  1. presentation layer → View
  2. Business layer → Controller
  3. Data Access Layer → Model

 

AOP(Aspect Oriented Programming) 사용 이유?

  • 애플리케이션 전반에 걸쳐 적용되는 공통 기능이 존재하는데 (로깅, 트렌젝션, 보안 등)
  • 핵심 비지니스 로직과 구분하기 위해 공통 기능을 공통 관심사항(cross-cutting concern)이라고 표현하며, 핵심 관심사항(core concern)이라고 표현한다.
  • 공통 관심 사항들을 OOP 객체 지향 기법(상속이나 위임 등을)사용해서 여러 모듈에 효과적으로 적용하는데 한계가 있으며, 중복된 코드를 만들게 된다.
  • 이런 한계를 극복하기 위해 AOP기법이 소개되었다.

요약

  • OOP 에서 각 클래스별로 공통적으로 사용하는 기능이 있을 경우 코드의 중복이 발생하게 되며 일관된 유지 보수가 어려워진다.
  • 이를 보완하여 AOP를 이용해 공통적인 부분을 모듈화하여 관리할 수 있게 해준다.

 

주요 용어

  • Joinpoint
    • Advice를 적용 가능한 지점
    • 메서드 호출, 필드 값 변경 등이 해당
  • Pointcut
    • Joinpoint의 부분 집합으로 실제로 Advice 가 적용되는 Joinpoint를 나타냄
  • Advice
    • 언제 공통 관심 기능을 핵심 로직에 적용할 지를 정의하고 있다
  • Weaving
    • Advice를 핵심 로직 코드에 적용하는 것
    • 즉 공통 코드를 핵심 로직에 삽입하는 것
  • Aspect
    • 여러 객체에 공통으로 적용되는 기능
    • 트랜젝션과 보안 등

 

 

이미지 출처

https://velog.io/@kai6666/Spring-Spring-AOP-%EA%B0%9C%EB%85%90

 

[Spring] Spring AOP 개념

AOP는 관점(Aspect)지향 프로그래밍으로, 관점을 기준으로 다양한 기능을 분리하여 보는 프로그래밍이다. 관점(Aspect)이란, 부가 기능과 그 적용처를 정의하고 합쳐서 모듈로 만든 것이다.OOP와 이름

velog.io

 

반응형