Spring 2일차

진창호·2023년 4월 17일
0

Spring

목록 보기
2/7

Spring은 AOP를 지원한다.

AOP가 주목하는 관심 사항은 아래와 같다.

  1. 핵심 관심 사항 : 문제를 해결하기 위함.
  2. 공통 관심 사항 : 전체에 적용하기 위함.

이 때, 공통 관심 사항을 Aspect라는 독특한 모듈 형태로 사용함으로써 객체지향적인 개념을 지키는 것이 AOP의 핵심 기능이다.

AOP는 아래와 같은 상황에 적용된다.

메서드 성능 검사, 트랜잭션 처리, 예외 반환 등


Spring은 AOP의 일부를 지원한다.

Spring에서 알아야 할 AOP 용어는 아래와 같다.

  1. Target : 부가기능을 부여할 대상. 핵심 기능을 담고 있는 모듈.
  2. Advice : 어느 시점에 어떤 Aspect를 적용할 지 정의한 것.
  3. JoinPoint : Aspect가 적용될 수 있는 지점. Target이 구현한 모든 메서드는 JoinPoint
  4. PointCut : Aspect가 적용될 JoinPoint
  5. Aspect(Advice + PointCut) : 여러 객체에서 적용되는 공통 관심 사항. Singleton 형태
  6. Advisor(Advice + PointCut) : Spring에서만 사용되는 Aspect의 특별한 용어.
  7. Weaving : PointCut에 Advice를 삽입하는 과정.

PointCut 표현식은 아래와 같다.
PointCut 표현식

Execution 표현식은 아래와 같다.
Execution 표현식

Execution 표현식의 예시는 아래와 같다.

<aop:pointcut id="pointCut" expression="execution(public * entity.Person.*(..))>"

이는 entity 패키지에 있는 Person 클래스의 접근 제한자가 public인 모든 메서드를 의미한다.

package에서 .은 해당 package만, ..은 해당 package와 하위 package까지 가리킨다.
class에서 +는 해당 class를 구현한 자식 class를 가리킨다.
method .. 은 매개변수에 영향을 받지 않고 모든 method를 가리킨다.

기존 프로그래밍과 AOP 프로그래밍의 차이는 아래와 같다.

Spring에서 사용하는 AOP의 특징은 아래와 같다.

  1. Proxy 기반 AOP


Proxy는 Advice를 Target 객체에 적용하면서 생성되는 객체이다.
따라서 Proxy는 런타임에 생성된다.

  1. Intercept (Proxy가 호출을 가로챔)

(전처리 Advice)
Proxy는 Target 객체에 대한 호출을 가로챈 다음 Advice의 부가기능 로직을 수행한다.
그 후, Target의 핵심기능 로직을 호출한다.

(후처리 Advice)
또는 Target의 핵심기능 로직을 호출한 후 Advice의 부가기능 로직을 수행한다.

  1. method JoinPoint만 지원

Target의 Method가 호출되는 Runtime에만 Advice를 적용할 수 있다.

profile
백엔드 개발자

0개의 댓글