AOP는 Aspect Oriented Programming의 약자로 관점지향 프로그래밍이라고 불린다.
관점지향이란 어떤 로직을 기준으로 핵심적인 관점, 부가적인 관점으로 나누어서 보고 그 관점을 기준으로 각각 모듈화하겠다는 것이다. 여기서 모듈화란 어떤 공통된 로직이나 기능을 하나의 단위로 묶는 것을 말한다.
예) 핵심적 관점은 적용하고자 하는 핵심 비즈니스 로직, 부가적 관점은 핵심로직을 실행하기 위해 행해지는 데이터베이스 연결, 로깅, 파일 입출력 등
각 관점을 기준으로 로직을 모듈화 한다 = 코드를 부분적으로 나누어 모듈화 한다
흩어진 관심사 (Crosscutting Concerns) : 다른 부분에서 계속 반복하여 쓰는 코드
흩어진 관심사를 Aspect로 모듈화하고 핵심적인 비즈니스 로직에서 분리하여 재사용하자
주요개념
- Aspect : 흩어진 관심사를 모듈화 한 것. 주로 부가 기능을 모듈화 함.
- Target : Aspect를 적용하는 곳 (클래스, 메서드)
- Advice : 실질적으로 어떤 일을 해야할 지에 대한 것, 실질적인 부가기능을 담은 구현체
- JointPoint : Advice가 적용될 위치, 끼어들 수 있는 지점. 메서드 진입 지점, 생성자 호출 지점, 필드에서 값을 꺼내올 때 등 다양한 시점에 적용 가능
- PointCut : JointPoint의 상세한 스펙을 정의한 것. 'A'란 메서드의 진입시점에 호출할 것'과 같이 더욱 구체적으로 Advice가 실행될 지점을 정할 수 있음.
1. pom.xml 에 추가
<!-- AOP -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
<version>6.2.10</version>
</dependency>
2. servlet-context.xml 에 추가
<context:component-scan base-package="lx.edu.springmvc" />
3. spring-context.xml 에 추가
<aop:aspectj-autoproxy></aop:aspectj-autoproxy>
4. LogAdvice.java 파일 생성 후 아래 코드 작성
'공간정보아카데미' 카테고리의 다른 글
Spring Boot - REST API (0) | 2025.09.06 |
---|---|
Filter vs Interceptor vs AOP (0) | 2025.09.06 |
MyBatis - Logging (0) | 2025.09.04 |
Spring MVC (0) | 2025.09.03 |
Loosely coupled vs Tightly-coupled (0) | 2025.09.03 |