경제학도의 개발공간
[20180425]AOP(Aspect Oriented Programming) 본문
반응형
AOP(Aspect Oriented Programming)
스프링 DI 가 의존성(new) 에 대한 주입이라면 스프링 AOP 는 로직(code) 주입이라고 볼 수 있다.
AOP (관심지향 프로그램밍)
주관심사
보조관심사 를 분리해서 작성
장점: 주관심사 로직은 핵심 코드 작업만 하면 되고
프로그램 호출 (ADD) 중간[proxy:가짜] 실함수 (void ADD(int x, int y))
[ 보조관심사 ]
[주관심사인 ADD 함수 주소 ]
[보조관심사 ]
순서
1. Proxy 호출
2. 보조업무 처리
3. Proxy 처리 함수 (실제 구현된 주관심 함수 호출)
4. 제어권이 Proxy 메서드로 넘어오고 나머지 보조관심사 처리
5. 처리 작업 완료 후 호출한 쪽에 값을 반환
AOP 용어
1. 조인 포인트(Joinpoint) >> method 기반 (Spring)
- 어드바이스가 적용될 대상
- 횡단 관심 모듈의 기능이 삽입되어 동작할 수 있는 실행 가능한 곳
2. 포인트컷(Pointcut)
@Pointcut(within()) >> ()에 해당하는 패키지에 있는 모든 자바 파일에 적용시키겠다
@Pointcut(execution()) >> ()에 해당하는 모든 메소드에 적용시키겠다.
@Pointcut(bean()) >> ()에 해당하는 bean객체에 모두 적용시키겠다.
- Joinpoint 대상에 적용될 위치
- 어떤 클래스의 어느 조인포인트를 사용할 것인지를 결정하는 선택 기능
3. 어드바이스 (Advice)
- 조인 포인트에서 삽입되어 동작되어질 코드
*어드바이스(advise)의 종류
- Before advice : 메서드 실행전에 적용되는 실행
- After returning advice : 메서드가 정상적으로 실행된 후에 실행 (예외를 던지는 상황은 정상적인 상황에서 제외)
- After throwing advice : 예외를 발생시킬 때 적용되는 Advice를 정의 (catch와 비슷)
- Around advice : 메서드 호출 이전, 이후, 예외 발생 등 모든 시점에서 적용 가능한 Advice를 정의
4. 위빙, 크로스컷팅 weaving
-- 포인트컷에 의해서 결정된 조인포인트에 지정된 어드바이스를 삽입하는 과정
5. 애스팩트(Aspect)
--포인트 컷과 어드바이스를 합쳐놓은것
Spring AOP의 특징
1) 표준 자바 클래스로 작성
2) Runtime 시점에 Advice가 적용
3) 메서드 단위의 조인 포인트만 가능
AOP의 구성요소
조인포인트(joinPoint) -
횡단 관심 모듈의 기능이 삽입되어 동작할 수 있는 실행 가능한 특정위치
ex) 메쏘드가 호출되는 부분 또는 리턴되는 시점, 필드를 액세스하는 부분,
인스턴스가 만들어지는 지점,
예외가 던져지는 시점,
예외 핸들러가 동작하는 위치,
클래스가 초기화되는 곳 등이 대표적인 조인포인트가 될 수 있다.
각각의 조인포인트들은
그 안에 횡단 관심의 기능이 AOP에 의해 자동으로 추가되어져서 동작할 수 있는
후보지가 되는 것이다.
포인트컷(pointCut) -
어떤 클래스의 어느 조인포인트를 사용할 것인지를 결정하는 선택 기능
AOP가 항상 모든 모듈의 모든 조인포인트를 사용할 것이 아니기 때문에 필요에 따라
사용해야 할 모듈의 특정 조인포인트를 지정할 필요가 있다.
일종의 조인포인트 선정 룰과 같은 개념이다.
AOP에서는 포인트컷을 수행할 수 있는 다양한 접근 방법을 제공한다.
AspectJ에서는 와일드카드를 이용한 메쏘드 시그니처를 사용한다
반응형
'BackEnd > Spring' 카테고리의 다른 글
[20180503]Mybatis WIth Spring (1) | 2018.05.03 |
---|---|
[20180503]Mybatis (0) | 2018.05.03 |
[20180501]HandlerInterceptor (0) | 2018.05.01 |
[20180424]Spring_Annotation (0) | 2018.04.30 |
[20180426] Spring MVC (0) | 2018.04.30 |