Spring AOP

오가람·2023년 4월 30일

Spring AOP 란?

Spring AOP 란, 관점 지향 프로그래밍의 약자로 일반적으로 사용하는 클래스 에서 중복되는 공통 코드 부분을 별도의 영역으로 분리해 내고, 코드가 실행 되기 전이나 이 후의 시점에 해당 코드를 붙여 넣음으로써 소드 코드의 중복을 줄이고, 필요할 때마다 가져다 쓸 수 있게 객체화하는 기술을 말한다.

Aspect 란?

" Advice + Pointcut = Aspect"

실제로 동작 코드를 의미하는 Advice 와 작성한 Advice가 실제로 적용된 메소드인 Pointcut을 합친 개념으로 부가기능(로깅, 보안, 트랜잭션 등)을 나타내는 공통 관심사에 대한 추상적인 명칭.(여러 객체에 공통으로 적용되는 부가기능을 작성한 클래스 나타냄)
AOP 개념을 적용하면 핵심기능 코드 사이에 끼어있는 부가기능을 독립적인 요소로 구분해 낼 수 있고, 이렇게 구분된 부가기능 Aspect는 런타임 시 에 필요한 위치에 동적으로 참여하게 할 수 있다.

Spring AOP 핵심 용어

용어 설명
Aspect 여러 객체에 공통으로 적용되는 기능을 분리하여 작성한 클래스
JoinPoint 객체(인스턴스) 생성 지점, 메소드 호출 시점, 예외 발생 시점 등 특정 작업이 시작되는 시점
Advice JoinPoint에 삽입되어 동작될 코드, 메소드
Before Advice JoinPoint 앞에서 실행
Around Advice JoinPoint 앞과 뒤에서 실행
After Advice JoinPoint 호출이 리턴되기 직전에 실행
After Returning Advice JoinPoint 메소드 호출이 정상적으로 종료된 후에 실행
After Throwing Advice JoinPoint 예외가 발생했을 때 실행
Pointcut JoinPoint 부분 집합/실제 Advice가 적용되는 부분
Introduction 정적인 방식의 AOP 기술
Weaving 작성한 Advice(공통 코드)를 핵심 로직 코드에 삽입
컴파일 시 위빙 컴파일 시 AOP가 적용된 클래스 파일이 새로 생성(AspectJ)
클래스 로딩 시 위빙 JVM에서 로딩한 클래스의 바이트 코드를 AOP가 변경하여 사용
컴파일 시 위빙 클래스 정보 자체를 변경하지 않고, 중간에 프록시를 생성하여 경유(Spring)
Proxy 대상 객체에 Advice가 적용된 후 생성되는 객체
Target Object Advice를 삽입할 대상 객체
profile
개발자준비생

0개의 댓글