반응형
AOP가 뭐지?
AOP는 Aspect Oriented Programming, 즉 관점 지향 프로그래밍이란, 횡단 관심사(흩어진 관심사)(cross-cutting concern)의 분리를 허용함으로써 모듈성을 증가시키는 것이 목적인 프로그래밍 패러다임이다.
횡단 관심사 (흩어진 관심사)가 뭐지?
여기서 먼저 횡단 관심사란 무엇일까요?
이를 이해하기 위해서 두 가지 helloA(), helloB() 샘플 메소드를 봅시다.
public void helloA() {
System.out.println("Start......");
AAA();
System.out.println("End......");
}
public void helloB() {
System.out.println("Start......");
BBB();
System.out.println("End......");
}
요 두개의 메소드를 보면 중복된 로직이 보이지 않나요?
바로 아래 처럼 서로 다른 코드를 사이에 두고 앞 뒤에 Start, End를 출력하는 코드가 앞 뒤에 위치하고 있습니다.
System.out.println("Start......");
// 서로 다른 부분
System.out.println("End......");
뭐 있을 수도 있지 않을까요?
만약에 시작과 끝을 한글로 출력하게끔 요구사항이 변경되었다고 가정해보자
하나하나 변경해줍시다 ^^
public void helloA() {
System.out.println("시작......");
AAA();
System.out.println("끝......");
}
ㅎㅎㅎ 또 바꿔야하네 ^^
public void helloB() {
System.out.println("시작......");
BBB();
System.out.println("후......");
}
만약 메소드가 100개라면?
⇒ 후.....
횡단 관심사 정리
이렇게 핵심 적인 기능이 아닌 중간중간 삽입되어야 할 기능들 관심들을 횡단관심사(Corsscutting Concerns)이라고 한다.
예를 들면 로깅, 보안, 트랜잭션 처리 등 비즈니스 핵심적인 기능이 아닌 다양한 횡단 관심이 발생할 수 있다.
그럼 다시 AOP란?
AOP는 Aspect Oriented Programming, 즉 관점 지향 프로그래밍이란, 횡단 관심사(cross-cutting concern)의 분리를 허용함으로써 모듈성을 증가시키는 것이 목적인 프로그래밍 패러다임입니다.
즉 소스코드 상에서 각각의 관점을 핵심적인 관점과, 부가적인 관점으로 나누어보고 그 관점을 기준으로 각각 분리하는 것을 의미한다.
AOP 주요 개념
- Aspect: 횡단 관심사를 모듈화 한 것을 의미하며, Advice + PointCut을 합친 개념
- Target: Aspect를 적용하는 곳, 즉 부가 기능을 적용할 대상
- Advice: 각 관심사가 하는 실제 부가기능을 담은 구현체
- JoinPoint: Advice를 적용 가능한 지점.
- PointCut: JoinPoint의 부분 집합으로 실제 Advice가 적용되는 JoinPoint를 나타냄.
반응형
'공통 > 기타' 카테고리의 다른 글
함수형 프로그래밍이란? (0) | 2021.07.21 |
---|---|
객체 지향? 객체 지향의 특성 (0) | 2021.05.17 |
링커와 로더 (0) | 2021.04.02 |
SOLID 원칙이란? (0) | 2021.03.18 |