전주호
WebSurf
전주호
전체 방문자
오늘
어제
  • 분류 전체보기 (63)
    • CS (1)
    • 프로그래밍 언어 (3)
      • JAVA (1)
      • Python (2)
    • WEB (35)
      • Spring (21)
      • FastAPI (1)
      • React (4)
    • Git (1)
    • Database (2)
    • Cloud (4)
    • Docker (0)
    • Linux (0)
    • AI (8)
      • ComputerVision (3)
      • CUDA (1)
      • Anaconda (1)
      • NLP (1)
    • ETC (9)
    • Project (0)
      • GolaBlur (0)
    • 알고리즘 문제 풀이 (0)
      • 프로그래머스 (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • websocket
  • jwt
  • jpa
  • 백엔드
  • 스프링
  • API
  • 테스트
  • db
  • oauth2
  • 단위테스트
  • junit
  • Internet
  • 클라우드
  • 백엔드로드맵
  • 문제해결
  • web
  • spring
  • Spring Security
  • EC2
  • PYTHON
  • http
  • AWS
  • conda
  • cloud
  • react
  • 트러블슈팅
  • MobileFaceSwap
  • AI
  • S3
  • springboot

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
전주호

WebSurf

[Spring] AOP의 기본 개념
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

 

반응형

'WEB > Spring' 카테고리의 다른 글

[Spring Boot] Spring Boot에서 TDD 방법론  (0) 2023.06.23
[Spring] 패키지 구조  (0) 2023.03.29
[Spring Boot] Spring boot EC2에 배포하기  (0) 2022.12.19
[Spring] RestTemplate Response Entity Type  (0) 2022.12.15
[Spring] AOP - 구현  (0) 2022.10.27
    'WEB/Spring' 카테고리의 다른 글
    • [Spring] 패키지 구조
    • [Spring Boot] Spring boot EC2에 배포하기
    • [Spring] RestTemplate Response Entity Type
    • [Spring] AOP - 구현
    전주호
    전주호

    티스토리툴바