베이직 반 < AOP >

김규현·2025년 5월 13일
1

내용

AOP

코드적으로는 어렵지 않지만 이론적으로 알아야 할 것들이 많다.

이론은 어렵고 심오하다.. 천천히 알아보기

지금은 코드를 사용하는 법을 알아보자.

AOP 등장배경

비지니스 로직을 실행 하기 전, 부가 기능을 사용해야 한다면 하나의 Service 객체에 두가지 로직이 같이 있어야함.

공통 관심 사항 (=횡단 관심사)

여러 위치에서 공통적으로 사용되는 부가 기능

변경 지점은 하나가 될 수 있도록 만드는 것

AOP란?

관점 지향 프로그래밍

하나의 로직을 기준으로 공통 관심 사항과 핵심 관심 사항으로 관점을 분리하여 관점들을 기준으로 모듈을 분리.

Aspect

부가 기능(공통 관심 사항)을 핵심 기능(핵심 관심 사항)에서 분리하고 한 한 곳에서 관리하는 기능

Advice
-> 부가기능을 하나의 위치에서 관리

pointcut
-> 어떤 위치에 적용 할지 정의

JoinPoint

AOP 적용 가능 지점

  • 생성자
  • 필드 값(멤버 변수)
  • method 실행
  • static method

AspectJ를 사용하면 모든 곳에서 사용 가능 하지만, Spring AOP는 다르다.
-> 실무에서는 Spring AOP로 해결이 가능하니, 일단 Spring AOP에 집중 학습

Spring AOP의 경우 프록시 방식을 사용하여 메서드 실행 시점에만 Spring AOP를 적용

  • Spring AOP는 Spring Container가 관리하는 Spring Bean에만 AOP를 적용
  • 프록시는 오버라이딩 형식으로 동작
    - 생성자, 멤버 변수, static method에는 사용할 수 없다.
  • userService.save() 메서드가 실행 될 때 Spring AOP가 실행 되게 해주세요
    - 부가기능 (Advice) : @Aspect에 있는 Advice를 동작 해주세요.
    - pointcut : userService.save() 에서 동작 해주세요.

1개의 댓글

comment-user-thumbnail
2025년 5월 13일

잘 보고가요

답글 달기