-
[SPRING] AOP를 사용해보장Spring Boot 2023. 1. 1. 22:15
업무 로직을 포함하는 비즈니스 로직을 핵심 기능(Core Concerns)라고 부르고,
핵심 기능을 도와주는 부가적인 기능을 부가기능(Cross-cutting Concerns)이라고 부른다.
AOP란?
로직을 짤 때 기능을 핵심기능과 부가기능으로 분리해서 관리한다면 더할 나위 없이 좋을 것이다. 이때 AOP는 핵심기능에서 부가기능을 애스팩트(Aspect)라는 모듈 형태로 만들어서 더 설계적으로 분리할 수 있게 도와준다.
애스펙트(Aspect)란?
Advice + PointCut = Aspect
애스펙트는 부가기능을 정의한 코드인 어드바이스(Advice)와 어드바이스를 어디에 적용하지를 결정하는 포인트컷(PointCut)을 합친 개념이다.
AOP 개념을 적용하면 핵심기능 코드 사이에서 부가기능을 독립적인 애스펙트로 뽑아서 관리할 수 있다. 그리고 관리되는 애스펙트를 런타임 시에 필요에 따라 핵심기능에 자유롭게 넣을 수 있다.
AOP 용어 정리
타겟(Target)
부가기능을 적용할 핵심기능 모듈이다.
어드바이스(Advice)
타겟에 적용시킬 부가기능 모듈이다.
조인포인트(Join Point)
어드바이스가 적용될 수 있는 위치를 말한다.
타겟 객체가 구현한 인터페이스의 모든 메서드는 조인 포인트가 된다.
포인트 컷(Pointcut)❓
어드바이스를 어디에 적용할지 결정하는 정규표현식이다.
포인트컷 표현식은 execution으로 시작하고 메서드의 Signature를 비교하는 방법을 주로 이용한다.
애스펙트(Aspect)
애스펙트는 AOP의 기본 모듈이다.
애스펙트 = 어드바이스 + 포인트컷
애스펙트는 싱글톤 형태의 객체로 존재한다.
어드바이저(Advisor)❓
- 어드바이저 = 어드바이스 + 포인트컷
- 어드바이저는 Spring AOP에서만 사용되는 특별한 용어이다.
위빙(Weaving)
위빙은 포인트컷에 의해서 결정된 타겟의 조인 포인트에 부가기능(어드바이스)를 적용하는 과정을 뜻한다.
위빙은 AOP가 핵심기능(타겟)의 코드에 영향을 주지 않으면서 필요한 부가기능(어드바이스)를 추가할 수 있도록
해주는 핵심적인 처리과정이다.
애노테이션 모음
@Aspect
@Around("execution(public * com.sparta.myselectshop2.controller..*(..))") 11:05
-> 해당 경로(포인트컷)에 위치한 API들에 부가기능을 적용시킬 것이라고 선언한다.
@Pointcut
-> 포인트컷 경로를 재사용할 수 있도록 변수화시킨다.
'Spring Boot' 카테고리의 다른 글
SQL 배운뒤 공부할 키워드 (0) 2023.01.09 [SPRING] 서버 실행 시 더미데이터를 생성해보장! (0) 2023.01.02 [SPRING] 테스트코드 어노테이션, 라이브러리, 메서드 모음 (0) 2022.12.28 ☑️[SPRING] 양방향 연관관계일 때 연관관계 편의 메서드를 만들어보장 (0) 2022.12.27 [SPRING] No EntityManager with actual transaction available for current thread - cannot reliably process 'persist' call; (0) 2022.12.26