WEB/Spring

[Spring] AOP의 기본 개념

전주호 2022. 10. 27. 08:42
반응형

AOP란?

 

관점 지향 프로그래밍으로

어떤 로직을 공통적인 기능과 핵심적인 기능을 분리해서 관리하도록 프로그래밍하는 것이다.

 

 

이런 그림으로 표현할 수 있다.

위를 보면 공통적으로 사용하는 기능을 분리해서 관리하는 것을 볼 수 있다.

우리가 지금까지 사용했던 함수(메서드)들과 비슷한 모습으로 보인다.

 

여기서 우리는 공통적인 기능들을 Aspect라 하고

그 기능 자체를 Advice라 한다.

 

이 Advice가 적용되는 부분은 메서드, 필드 등이 있는데

스프링에서는 메서드만 적용 가능하다.

그리고 이것을 Joinpoint라 한다.

 

그리고 Pointcut을 통해

Joinpoint에서  Advice가 실행될 지점을 더욱 구체적으로 정할 수 있다.

 

 

실제로 구현할 때는 프록시 패턴을 기반으로 구현하게 되는데,

 

Client  -  Proxy  -  Target

 

이러한 구조로 되어있다.

 

여기서 Target은 공통적인 기능(Advice)을 부여할 대상이다.

 

 

 

※ 스프링에서는 빈에서만 AOP를 적용할 수 있다! ※

 

 


 

Advice의 종류

 

Advice는 앞서 말했듯이 공통적인 기능 그 자체를 말한다.

Aspect가 '무엇''언제' 할지에 대한 정의를 담고있다.

 

이 Advice는 여러 종류로 나뉘어 동작하게 된다.

그 종류로는 Before,  After,  After-returning,  After-throwing,  Around 가 있다.

자세히 살펴보자!

 

먼저 Before은 Advice 타겟 메서드가 호출되기 전에 기능을 수행하는 것이다.

 

마찬가지로 After은 Advice 타겟 메서드가 호출된 후에

결과에 관계없이 메서드가 완료되면 기능을 수행한다.

 

After-returning은 After과 달리 타겟 메서드가 성공적으로 결과값을 반환했을 경우

기능을 수행하게 된다.

 

이와 반대로 After-throwing은 예외가 발생했을 경우 기능을 수행한다.

 

Around는 after과 before을 합치듯 타겟 메서드의 실행 전 후에 기능을 수행한다.

 

 

각각의 기능들을 어노테이션으로 선언해서 사용하면 된다.

 

@Before

@After

@AfterReturning

@AfterThrowing

@Around

 

 

 

 

 

Reference

https://engkimbs.tistory.com/746

 

[Spring] 스프링 AOP (Spring AOP) 총정리 : 개념, 프록시 기반 AOP, @AOP

| 스프링 AOP ( Aspect Oriented Programming ) AOP는 Aspect Oriented Programming의 약자로 관점 지향 프로그래밍이라고 불린다. 관점 지향은 쉽게 말해 어떤 로직을 기준으로 핵심적인 관점, 부가적인 관점으..

engkimbs.tistory.com

https://www.baeldung.com/spring-aop

 

Introduction to Spring AOP | Baeldung

Discover the core Spring AOP along with its basic terminology.

www.baeldung.com

https://n1tjrgns.tistory.com/261

 

[Spring] 스프링 AOP with (프록시 패턴)

인프런 백기선님의 예제로 배우는 스프링 입문 (개정판) 강좌를 참고해 정리한 글 입니다. 내가 알기로 AOP는 공통 로직을 줄이기 위해 사용한다고 알고있다. 어떻게?? 찾아보자. AOP란? 어플리케

n1tjrgns.tistory.com

 

반응형