-
스프링 AOP : 개념SPRING/스프링프레임워크 핵심개념 2021. 5. 29. 01:14
AOP : Aspect-oriented Programming (AOP)은 OOP를 보완하는 수단으로, 흩어진 Aspect를 모듈활 할 수 있는 프로그래밍 기법
흩어진 관심사 (Crosscutting Concerns)
위 그림에서 같은 색깔의 영역들은 여러 클래스에서 공통적으로 사용하는 로직들이다.
AOP는 주로 Logging이나 Transaction에 사용이 되는데 Logging할 때 AOP가 필요한 이유는 다음과 같다.
메서드가 실행되는 시간을 재는 로그를 쌓고자 할때, class A,B,C 각각에 시간을 재는 코드를 추가해야 한다.
이러한 경우에는 각각의 클래스에 있는 시간을 재는 로직을 수정해야 하기 때문에 유지보수가 어렵다.
그렇기 때문에 AOP를 이용하여 해결한다.
Aspect X, Y, Z 각각 Concern 별로 Aspect를 만들고, Aspect를 사용할 클래스에 적용한다.
위와 같이 공통 로직을 묶어서 모듈화하는 것을 AOP라고 한다.
AOP의 주요 개념
- Aspect와 Target
- Advice
- Join point와 Pointcut
Aspect : Advice와 Pointcut을 포함.
Advice : 공통 로직 (위 스크린샷의 노랑, 초록, 빨간색 부분)
Pointcut : Advice를 어디에 적용 할 지에 대한 정보. (A클래스의 a method에 Aspect X의 advice를 적용하겠다.)
Target : 적용이 되는 대상 (클래스)
Joint Point : AOP가 적용된 메서드가 실행되는 시점
Weaving : Advice를 핵심 로직코드에 삽입하는 것을 위빙이라고 함.
AOP 적용방법
1. 컴파일
2. 로드 타임
3. 런타임
-> SPRING AOP
'SPRING > 스프링프레임워크 핵심개념' 카테고리의 다른 글
스프링 AOP: @AOP (0) 2021.05.29 Spring AOP: 프록시 기반 AOP (0) 2021.05.29 SPEL(스프링 Expresssion Language) (0) 2021.05.23 데이터 바인딩 추상화 : Converter와 Formatter (0) 2021.05.23 데이터 바인딩 추상화: PropertyEditor (0) 2021.05.19