AOP(Aspect Oriented Programming)란?
[AOP : 관점 지향 프로그래밍 (Aspect Oriented Programming)]
AOP : 관심사를 분리하여 코드 중복 없이 처리하는 프로그래밍 기법.
각 핵심 기능 메서드마다 중복되는 공통 작업들이 있다. 예를 들면 로깅, 보안, 권한 확인, 트랜잭션, 예외 처리 등. 이러한 공통 기능을 여러 클래스에 매번 넣으면
- 중복 코드 증가 / 2. 유지보수 어려움 / 3. 핵심 로직이 흐려지기 때문에
AOP는 이러한 공통 관심사들을 별도로 분리해서 한 곳에서 관리하도록 하는 것을 말한다.
※ AOP 미적용 시 : 코드 사이에 로그가 섞여있어서 핵심 로직을 흐리고 가독성이 좋지 않음
public void 회원가입() {
System.out.println("로그 시작");
// 회원가입 로직
System.out.println("로그 끝");
}
※ AOP 적용 시 : 코드 사이에 로그가 없고 핵심 로직만 남아 중복 코드가 없어지고 핵심 로직이 잘 드러난다.
// 핵심 로직만 유지
public void 회원가입() {
// 회원가입 로직만 있음
}
[AOP 용어정리]
1. Aspect : 공통기능 묶음 클래스. 로그, 보안검사, 트랜잭션과 같은 "공통 기능만 따로 묶어둔 클래스"
ex. 로그, 트랜잭션 등을 각자 하나의 기능으로 생성
2. Advice : 위에서 만든 공통기능을 "언제 실행할지" 실행 시점을 결정
3. Pointcut : "어떤 메서드에 적용할지" 선택하는 것
4. Joinpoint : Advice가 실제로 "실행되는 지점(위치)". 끼어들 수 있는 시점을 말함.
다시 말하자면 Advice가 끼어들 수 있는 후보 지점들을 뜻함.
5. Weaving : 끼워넣는 작업을 말함. 즉, "핵심 로직에 공통 로직을 끼워넣는 작업(행위)"을 말하는데,
Advice가 실제 메서드 사이에 끼워져서 실행되는 순간을 Weaving이라고 한다.
스프링 AOP의 경우에는 런타임 Weaving에 속하는데, 이는 실제 실행 시에 실행되는 것을 말한다.
JoinPoint에 Advice를 실제로 연결하는 행위를 말함.
스프링 프레임워크
IoC를 위해 → XML 사용!
⇒ 그러면 AOP는 어떻게 ?
- AOP는 높은 응집도를 유지하는데에 도움을 줌. (연관있는 코드끼리 묶음. 예를 들자면, 로깅 코드들을 하나의 클래스로 묶어서 여기저기 호출해 쓰는 것!)
- IoC는 낮은 결합도를 유지하는데에 도움을 줌
⇒ 즉, AOP와 IoC를 합치면 유지보수가 용이해진다!
서비스에서 공통 기능을 분리 해내는 것으로 AOP가 시작된다.
이때 분리해내는 행위를 “관심 분리” 라고 하고, 영어로는 Separation of Concern이라고 한다.
'웹 개발' 카테고리의 다른 글
Map 등을 DI 할 수는 없을까? (0) | 2025.04.25 |
---|---|
XML 파일로 AOP 적용하기 (0) | 2025.04.24 |
이메일 API 코드를 Spring Boot로 변환할 때 경고 처리 (0) | 2025.04.22 |
JSP/Servlet → Spring Boot 이관 중 배운 점 (0) | 2025.04.21 |
web.xml, applicationContext.xml (0) | 2025.04.20 |