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의 일종