Spring

Spring - AOP

밍상 2021. 9. 28. 14:46

AOP란 무엇인가?

AOP는 Aspect Oriented Programming(관점 지향 프로그래밍)의 약자이다.

 

OOP를 보완해주는 역할을 합니다.

 

Controller, Service, Repository 같은 핵심 관심 사항에 시간측정 같은 공통 관심 사항을 적용해줄 수 있다.

공통 관심 사항을 핵심 관심 사항과 별도로 작성해서 관리해주면 유지보수에 용이하다.

 

인프라 로직

  • 애플리케이션의 전 영역에서 나타날 수 있음
  • 중복코드를 만들어낼 가능성 때문에 유지보수가 힘들어짐
  • 비지니스 로직과 함께 있으면 비즈니스 로직을 이해하기 어려워짐

Target

어떤 대상에 부가 기능을 부여할 것인가

 

Advice

어떤 부가 기능을 부여할 것인가?

 

Join point

어디에 적용할 것인가? 메서드, 필드, 객체, 생성자 등

Before, AfterReturning, AfterThrowing, After, Around

 

Point cut

실제 advice가 적용될 지점, Spring AOP에서는 advice가 적용될 메서드를 선정

 

Transactional, Interceptor, Filter 등등도 AOP의 일종