2017. 4. 1. 14:10 Java/환경 & 기술
Spring 의 AOP (초간단 개념 정리)
요약
비지니스 로직은 정해진 목적에 따라 일련의 일을 처리하는 과정을 설명한다고 하겠다.
목적 달성은 주 관심사다.
만약 목적에 따른 수행 외에도 소요시간이 알고 싶다면?
이것은 부 관심사다.
주 관심사와 부 관심사는 두 가지의 다른 측면인 것이다.
AOP : Aspect Oriented Programming은 이런 여러 다른 측면을 따로 분리하여 각각에 맞게 집중적으로 프로그래밍 한다는 기법인 것이다.
적어도, 이것이 필자가, 수 많은 시간을 인터넷 검색으로 투자하고 얻어낸 결론이다.
용어설명
Aspect :
- 언어적 정의에는 측면이라는 뜻이 있다.
- AOP안에서는 횡단 관심사(Crosscutting Concern)를 의미. 이것은 다른 관심사에 영향을 미치기 때문이다. (REF: 위키피디아)
- Spring에서는 @Aspect 로 표기하고 Class로 정의 한다.
Joinpoint :
- 언제/어느곳에서 만나는가를 의미.
- 대상 시점/지점을 말함. 일정 기준으로 여러 joinpoint를 합쳐 놓은 것을 pointcut이라 부른다. (REF: 위키피디아 )
- 일반적으로는, 주 관심사를 두고 그 전, 후 또는 전후 모두가 지정될 수 있다. 이에 따라 부 관심사의 실행코드인 advice가 분류된다.
- Spring에서는 빈의 메소드가 대상 단위.
Pointcut :
- joinpoint를 정의.
- Spring 에서는 메소드의 실행점을 정의. (빈의 메소드가 대상 단위이기 때문임)
- 표현식에서 보이는 범위 지정 방식과 혼돈하면 안된다.
Advice :
- 부 관심사로 분류됨.
- Spring에서는 Annotation으로 실행시점을 정의. 이 정의로 타입을 분류함.
- Before
- After returning --> 정상 반환
- After throwing --> 예외 발생
- After (finally)
- Around
마무리
장황하고 자세하게 설명하기 위해선 여러 다른 개념도 설명해야 겠지만, 이 글은 최소한의 정의를 목적으로 하였기에 여기서 마무리한다.
'Java > 환경 & 기술' 카테고리의 다른 글
Image 다루기 (크기조정, scaling) (0) | 2017.01.08 |
---|---|
String과 .getBytes() (0) | 2017.01.05 |
.getRealPath() 에서 주의 사항 (0) | 2017.01.05 |
System Properties (System.getProperty) (0) | 2017.01.04 |
개발 중 난항 극복 방법 (0) | 2016.12.07 |