티스토리 뷰

한화시스템/백엔드

[BE] Spring AOP

jjam-mo 2024. 8. 12. 23:38

1. AOP란?

💡 관점 지향 프로그래밍(Aspect Oriented Programming)
중복되는 공통 코드를 분리하고 코드 실행 전이나 후의 시점에 해당 코드를 삽입함으로써 소스 코드의 중복을 줄이고, 필요할 때마다 가져다 쓸 수 있게 객체화하는 기술
객체지향 프로그래밍(OOP, Object Oriented Programming)을 보완하기 위해 사용
📌 JoinPoint 들 중에서 Point Cut 을 선정해서 Advice를 적용!

 

횡단 관점 : 핵심 비즈니스 로직(핵심 관점)이 있고, 애플리케이션 전체를 관통하는 부가 기능 로직이 있다.

cf. 횡단 관점
애플리케이션 로직은 핵심기능과 부가기능으로 나뉜다.
- 핵심 기능 : 해당 객체가 제공하는 고유의 기능
- 부가 기능 : 핵심 기능을 보조하기 위해 제공되는 기능(ex. 로그 추적 기능, 트랜잭션 기능)

일반적으로 기존 프로젝트에 부가 기능을 추가하게 되면 하나의 클래스가 아닌 여러 클래스에 부가 기능을 추가하게 된다.
예를 들면, 프로젝트의 모든 클래스에 로그 기능을 추가 한다면 하나의 부가 기능(로그 추적)을 여러 곳에 동일하게 사용
→ 이러한 부가 기능을 횡단 관점이라 한다.

2. AOP 핵심 용어

  • Aspect
    • 공통 기능
    • 핵심 비즈니스 로직과는 별도로 수행되는 횡단 관심사
    • 어느 지점(join point, point cut), 어떤 기능(advice)
  • Advice
    • Aspect의 기능 자체
  • Join point
    • Advice가 적용될 수 있는 위치(어느 지점들)
  • Pointcut
    • Join point 중에서 Advice가 적용될 가능성이 있는 부분을 선별한 것
  • Weaving
    • Advice 를 핵심 비즈니스 로직에 적용하는 것

 

 

3. Advice의 종류

종류 설명
Before 대상 메소드가 실행되기 이전에 실행되는 어드바이스
After-returning 대상 메소드가 정상적으로 실행된 이후에 실행되는 어드바이스
After-throwing 예외가 발생했을 때 실행되는 어드바이스
After 대상 메소드가 실행된 이후에(정상, 예외 관계없이) 실행되는 어드바이스
Around 대상 메소드 실행 전/후에 적용되는 어드바이스

 

4. Spring AOP

  • 프록시 기반의 AOP 구현체 : 대상 객체(Target Object)에 대한 프록시를 만들어 제공 / 타겟을 감싸는 프록시는 서버 Runtime 시에 생성된다.
    • 모든 Proxy 기술의 핵심은 Target Object를 건드리지 않고 추가적으로 기능을 붙이는 것이다.
  • 메서드 조인 포인트만 제공 : 핵심기능(대상 객체)의 메소드가 호출되는 런타임 시점에만 부가기능(어드바이스)을 적용할 수 있다.
  • 일종의 Transaction
    • `@Transactional`??? → 아! AOP 구나!!!

'한화시스템 > 백엔드' 카테고리의 다른 글

[BE] JAVA_Stream  (0) 2024.07.29
[BE] JAVA_ENUM  (0) 2024.07.24
[BE] JAVA_컬렉션(Collection)_Map  (2) 2024.07.24
[BE] JAVA_컬렉션(Collection)_Set  (1) 2024.07.24
[BE] JAVA_컬렉션(Collection)_List  (1) 2024.07.23
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함