Programming/Java, Spring

[Spring] AOP란?? / AOP를 사용하는 이유

Juun 2022. 10. 13. 13:00
반응형

AOP(Aspect Oriented Programming)

AOP(Aspect Oriented Programming)

→ 여러 오브젝트에 나타나는 공통적인 부가 기능을 모듈화하여 재사용하는 기법

또한 관심사의 분리(기능의 분리), 핵심적인 기능에서 부가적인 기능을 분리하므로

핵심기능을 설계하고 구현할 때 객체지향적인 가치를 지킬수 있도록 도와주는 개념입니다

→ OOP를 보완한다

AOP를 사용하는 이유

  • 공통 관심 사항을 핵심 관심사항으로부터 분리
  • 그에 따라 코드의 가독성, 유지보수성 및 생산성 증가
  • 각 모듈에 수정이 필요하면 다른 모듈의 수정 없이 해당 로직만 변경
  • 공통 로직을 적용할 대상을 선택 가능

부가기능(인프라 로직)

  • 부가기능을 Aspect 또는 advice로 정의함
  • 중복코드를 만들어낼 가능성 때문에 유지보수가 힘들어짐
  • 비즈니스 로직과 함께 있으면 비즈니스 로직을 이해하기 어려워짐

→ 그래서 분리가 필요

AOP 용어

용어설명

target advice가 추가될 객체
advice targer에 동적으로 추가될 부가 기능(코드)
join point advice가 추가(join)될 대상(메서드)
pointcut join point들을 정의한 패턴
proxy target에 advice가 동적으로 추가되어 생성된 객체
weaving target에 advice를 추가해서 proxy를 생성하는 것

Advice 종류

kind Annotation desc
around advice @Around 메서드의 시작과 끝 부분에 추가되는 부가 기능
before advice @Before 메서드의 시작 부분에 추가되는 부가 기능
after advice @After 메서드의 끝 부분에 추가되는 부가기능
after returing @AfterReturing 예외가 발생하지 않았을 때, 실행되는 부가 기능
after throwing @AfterThrowing 예외가 발생했을 때, 실행되는 부가 기능

 

반응형