AOP(Aspect Oriented Programming)

AOP(Aspect Oriented Programming)

관점 지향 프로그래밍

·

2 min read

정의

💡
AOP는 Aspect Oriented Programming의 약자로, 관점 지향 프로그래밍이라고 불립니다. 관점 지향은 어떤 로직을 기준으로 핵심적인 관점과 부가적인 관점으로 나누어서 보고, 그 관점을 기준으로 각각 모듈화하겠다는 것입니다

특정 함수 호출 전이나 공통적인 처리가 필요할 때 사용

프록시 패턴이 적용됨

Spring AOP Tutorial for Beginners - Step by Step with Example

장점

코드 재사용성 높아짐으로 인한 유지보수 용이

사용 사례

  • 로깅

  • 트랜잭션

  • 인증

  • OOP로 처리하기 어려운 부분을 AOP로 도입하여 쉽게 공통 기능을 추가/수정/삭제 할 수 있도록 함

동작 과정

  1. 빈 객체를 생성한 뒤 빈 후처리기에게 전달

  2. 어드바이저 내의 포인트컷을 이용해 전달받은 빈이 프록시 적용 대상인지 확인

  3. 프록시 생성 대상 빈들을 대상으로 프록시 객체를 생성

  4. 프록시를 생성한 빈이라면 프록시를, 프록시를 생성하지 않은 빈이라면 그냥 빈을 반환

  5. 빈 후처리기에게 전달받은 객체를 컨테이너의 빈으로 등록


관련 기능들

Target

어떤 Advice가 적용되는 객체

Advice

AspectJ에서 특정 JoinPoint에서 실행되는 코드 이는 @Before, @After, @AfterThrowing, @AfterReturning 등과 같이 사용될 수 있음

JoinPoint

프로그램 실행 중에 추가 동작을 추가할 수 있는 지점 메서드 매개변수, 반환 값 또는 발생한 예외와 같은 주어진 JoinPoint에서 사용 가능한 상태에 대한 반사적인 접근을 제공

PointCut

JoinPoint의 집합을 의미하며, 어떤 Advice가 적용될 지점을 결정하는 데 사용됨

Advisor

단일 조언이 포함된 작은 자체 포함형 Aspect에 해당. 직접적인 기능을 수행하는 것이 아님

Weaving

Aspect를 다른 애플리케이션 유형 또는 객체와 연결하여 조언된 객체를 생성하는 과정


모듈

GCLib, AspectJ


AspectJ

포인트컷 표현식

Declaring a Pointcut :: Spring Framework


어드바이스

After

메서드가 반환되거나 예외 상황이 발생한 후 호출

AfterReturning

메서드가 반환된 이후에 호출

AfterThrowing

메서드가 예외 상황을 발생시킨 이후에 호출

Before

메서드가 호출되기 이전에 호출

Around

메서드의 호출 전과 반환되거나 예외 상황 이후에 호출

참고

Core Technologies :: Spring Framework

Introduction to Spring AOP | Baeldung

(1) [10분 테코톡] 콩하나의 스프링 AOP - YouTube