Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 레드마인
- 일감관리
- kibana
- Si
- elasticsearch
- java
- PM
- spring
- 엘라스틱서치
- 오라클
- AOP
- It
- PreparedStatement
- 인덱스
- 스프링
- spring aop
- frontend
- 검색
- backend
- 웹프론트
- 자바
- 프로젝트관리
- 백엔드
- 비전공개발자
- Database
- 데이터베이스
- 이슈관리
- db
- 개발자
- redmine
Archives
- Today
- Total
리타의 저장소
Spring AOP | Spring AOP 주요 개념 요약 본문


주요 개념
Spring AOP에서 자주 사용되는 개념들에 대해 정리해보고자 한다.
Spring AOP 주요 개념 요약
AOP는 "공통 기능(Aspect)을 핵심 로직과 분리해서, 실행 지점(Join Point)에 조건(Pointcut)에 따라 동작(Advice)을 위빙(Weaving)하는 기법"이다.
용어의미설명
| Aspect | 관점 | 공통 기능을 모듈화한 것 (ex: 로깅, 트랜잭션 등) |
| Join Point | 실행 지점 | Advice가 실행될 수 있는 위치 (ex: 메서드 호출, 예외 발생 등) |
| Advice | 실질 로직 | 언제, 어떤 공통 로직을 실행할지 정의 |
| Pointcut | 실행 조건 | 어떤 Join Point에 Advice를 적용할지 정의 |
| Weaving | 삽입 행위 | Advice를 실제 코드에 적용하는 과정 |
| Target Object | 실제 객체 | AOP 적용 대상 (프록시로 감싸짐) |
| Proxy | 감싸는 객체 | AOP를 적용하기 위해 생성된 중간 객체 |
1. 🧠 Aspect (관점)
AOP의 핵심 단위. 횡단 관심사(Cross-Cutting Concern)를 모듈화한 것
* 주로 부가기능을 모듈화한다.
- 예: 트랜잭션 관리, 로깅, 보안 체크 등
- Spring에서는 @Aspect로 선언
@Aspect
@Component
public class LoggingAspect { ... }
2. 🎯 Join Point (조인 포인트)
Advice가 적용될 수 있는 프로그램 실행 지점
끼어들 수 있는 지점. 메서드 진입 지점. 생성자 호출 시점. 필드에서 값을 꺼내올 떄 등 여러 시점에 적용 가능하다.
3. ⚙️ Advice (어떤 동작을 할지)
공통 기능을 언제 실행할지를 정의하는 코드
실질적으로 어떤 일을 해야할 지에 대한 것. 실질적인 부가 기능을 담은 구현체
종류시점예시
| @Before | 메서드 실행 전 | 로깅, 인증 |
| @AfterReturning | 메서드 정상 종료 후 | 로그 남기기 |
| @AfterThrowing | 예외 발생 시 | 에러 로그 |
| @After | 종료 후 무조건 실행 | 리소스 해제 |
| @Around | 메서드 전/후 감싸기 | 트랜잭션, 타이머 |
@Before("execution(* com.example..*(..))")
public void beforeLog() {
System.out.println("메서드 실행 전 로그");
}
4. 🔍 Pointcut (대상 지정 조건)
어떤 Join Point에 Advice를 적용할지를 지정하는 조건식
>> Join Point에 대한 상세 스펙 정의한 것.
‘A라는 메서드의 진입 시점에 호출할 것’ 과 같이 더 구체적으로 Advice가 실행될 지점을 정할 수 있다.
- execution(), within(), @annotation 등을 사용해 필터링
@Pointcut("execution(* com.example.service.*.*(..))")
public void serviceMethods() {
- 이 Pointcut에 Advice를 적용:
@Before("serviceMethods()")
public void beforeServiceLog() {
...
}
5. 🪢 Weaving (위빙)
Advice를 Join Point에 적용해서 실제 동작에 삽입하는 과정
- 컴파일 타임, 클래스 로딩 타임, 런타임에 가능
→ Spring AOP는 런타임 시점에서 프록시를 통해 Weaving을 수행함
6. 🎯 Target Object (대상 객체)
AOP가 적용될 실제 비즈니스 객체 (서비스 등)
(Aspect 를 적용하는 , 클래스, 메서드 등…)
@Service
public class OrderService {
public void order() { ... } // 이게 target 메서드
}
7. 🧥 Proxy (프록시 객체)
Spring이 Target Object를 감싸서 AOP를 적용하는 중간 대리 객체
- Spring AOP는 프록시 기반 AOP
- 메서드 호출을 프록시가 가로채고, AOP 로직을 실행한 뒤 실제 객체 메서드를 호출

'Dev > Backend' 카테고리의 다른 글
| Spring AOP | JDK Dynamic Proxy (0) | 2025.10.11 |
|---|---|
| Spring AOP | JDK Dynamic Proxy & CGLIB Proxy (0) | 2025.10.11 |
| Spring AOP | 서비스 호출 전에 로깅, 꼭 AOP에서 해야만 하나? (0) | 2025.10.11 |
| JAVA | JVM이란 무엇인가? (0) | 2025.10.11 |
| JAVA | JPA와 Mybatis에서의 PreparedStatement 동작방식 (0) | 2025.10.11 |