AOP란?
핵심 기능을 실행하는데 반드시 필요하지는 않지만, 여러 핵심 기능에 걸쳐 동일하게 작동하는 기능이 있다.
예를 들어 한 메소드가 실행하는데 걸리는 시간을 구하는 기능이라던지, 메소드의 반환값을 저장하는 기능 등이 이에 해당한다.
이렇게 서로 다른 비즈니스 로직이 공통적으로 가졌으면 하는 기능을 횡단 관심 또는 횡단 관점이라고 한다.
관점 지향 프로그래밍은 이러한 횡단 관심사들에 초점을 맞추는 개발 패러다임의 일종이다
핵심 관점은 비즈니스 로직을 말한다.
보안, 로깅, DB는 핵심 기능은 아니지만 단순 목적을 위해 소스코드를 여러 곳에 중복 작성해야 한다.
횡단 관점은 이런 관심사 분리를 통해 중복 코드 작성을 줄일 수 있게 해준다.
spring-boot-stater-aop
관심사 분리를 하고 싶을 때 추가하는 의존성이지만 start.spring.io에는 없다… but 수동으로 추가해줘도 잘 작동함 ❗❗
build.gradle에 수동으로 의존성 추가
//https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-aop
implementation 'org.springframework.boot:spring-boot-starter-aop:3.1.1'
의존성 추가 후 @Aspect 어노테이션이 정상적으로 작동하면 aop를 사용한 준비가 된 것이다.
AOP 기초
Aspect : 횡단 관점에 적용할 기능을 모듈화한 단위. 즉 어떤 핵심 기능에 추가할 횡단 기능에 대한 정의.
Join Point : 프로그램의 흐름에 관점을 진입할 수 있는 후보지. 실행 중인 프로그램에서 메소드 호출, 예외 발생 등의 시점을 지칭. 이러한 Join Point에 정의한 Aspect를 적용할 수 있다.
Pointcut : Join Point 중에서 우리가 몇 곳을 골라서 진입하게 되는데 그 부분을 지칭함. 어떤 특정한 Join Point를 지칭하기 위한 기준. Advice가 실제로 적용될 Join Point를 정의하는 역할.
Advice : 특정 Join Point에서 실제로 실행될 기능. Advice는 Join Point의 전(Before), 후(After), 전후(Around) 등 다양한 시점 지칭 가능.
정의한 횡단 관점을 실제 프로그램에 적용시키는 과정을 Weaving이라고 함.
'멋쟁이 사자처럼 > TIL' 카테고리의 다른 글
230629 11주 4일차 TIL. 프로그래머스 9로 나눈 나머지. (0) | 2023.06.29 |
---|---|
230628 11주 3일차 TIL. File 실습 (0) | 2023.06.28 |
230626 11주 1일차 TIL. 그래프, Validation, (0) | 2023.06.26 |
230620 10주 2일차 TIL. LinkedList, 직렬화, REST (0) | 2023.06.20 |
230619 10주 1일차 TIL. Queue, HTTP (0) | 2023.06.19 |