◆ SPRING BOOT/AOP
[AOP] AOP의 개요와 용어
쿠키린
2024. 10. 31. 00:40
면접 질문으로 받았었던 AOP
오늘은 다시 정리해서 올리려고 합니다.
핵심기능? 부가기능?
- 업무로직을 포함하는 기능을 핵심기능(Core Concerns)이라 함.
- 비즈니스 로직을 구현한 부분
ex) 책을 본다, 공부를 한다
- 핵심기능을 도와주는 부가적인 기능을 부가기능(Cross-cutting Concerns)이라 함.
- 로깅, 보안 등 시스템 전반에 산재되어 사용하는 기능
ex) 눈을 뜬다, 눈을 감는다
- 핵심기능에서 부가기능을 분리해서 모듈화하는 프로그래밍 기법 = AOP
스프링 AOP
스프링을 통해서 AspectJ를 사용하는건 어렵지만
스프링 AOP를 사용하면 쉽게 사용 가능해진다.
AOP 흐름
Aspect(보안,인증, 로그 등 부가기능)
- 부가기능(어드바이스)
- 포인트컷(부가기능을 어디다 끼어놓을지, 위치정보) -- 특정 메소드를 지정(스프링 AOP는 메소드만 지정가능)
↕️
Weaving(위빙, 런타임 시 끼어들기)
↕️
핵심기능(비즈니스 로직을 구현한 부분)
AOP 설정
maven - 라이브러리 설정
<dependency>
<groupId> org.springframework.boot </groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
aspect도 POJO로 만든다(일반 자바 클래스)
🔽상단에 어노테이션 기입
@Aspect
@Component
public class classAspect {
....부가기능.....
}
- 서버가 올라갈 때 같이 로딩됨.
더 자세한건 AOP 카테고리를 확인해주세요~!~