AOP with Spring Framework
AOP Terminologies:
Terms | Description |
---|---|
Aspect | Cross-cutting 요구를 제공하는 API set을 갖는 모듈. 예를 들면, logging 모듈은 logging을 위해 AOP aspect로 불려질 수 있다. 프로그램은 요구에 따라 다수의 aspect를 가질 수 있다. |
Join point | AOP aspect에서 plug-in할 수 있는 프로그램에 지점(point)를 나타낸다. 이것은 Spring AOP framework를 사용하여 action이 취해질 수 있는 프로그램내의 실제 공간으로 말할 수 있다. |
Advice | 함수 실행 이전 혹은 이후에 취해지는 실제 action이다. Spring AOP framework에 의한 프로그램 실행동안 호출되는 실제 코드이다. |
Pointcut | Advice가 실행되어지는 하나 또는 그 이상의 jointpoint set이다. 이후 AOP예제에서 보게 될 것과 같이 pointcut을 표현(expression)과 패턴으로 나타낼 수 있다. |
Introduction | class에 새로운 함수 또는 속성(attribute)을 추가할 수 있게 한다. |
Target object | 하나 또는 그이상의 aspect에 의해 advice되고 있는 객체. 이 객체는 항상 proxy 개체가 될 것이다. 또한 advise되어진 객체로써 참조되어 진다. |
Weaving | Weaving은 advice되어진 객체를 생성하기 위한 다른 프로그램 타입 혹은 객체와 aspect를 연결하는 절차이다. 이것은 complie시, load시, runtime시 행해질 수 있다. |
Types of Advice
Advice | Description |
---|---|
before | 함수 실행전 advice를 실행 |
after | 함수가 종료(outcome)되지 않는한 함수 실행전 advice를 실행 |
after-returning | 함수가 성공적으로 완료되면 함수 실행 후 advice 실행 |
after-throwing | 함수가 exception 발생으로 종료되면 함수 실행 후 advice 실행 |
around | 호출된 advice된 함수 전/후에 advice 실행 |
Custom Aspects Implementation
Approach | Description |
---|---|
XML Schema based | XML 기반 설정을 따르는 일반(regular)적인 class를 사용하여 aspect가 구현됨. |
@AspectJ based | @AspectJ refers to a style of declaring aspects as regular Java classes annotated with Java 5 annotations. |