@Validation 처럼 신입 백엔드 개발자로 알고있으면 좋지만, 필수적인 것은 아닙니다.관점 프로그래밍의 약자입니다.
- 여기서 관점 프로그래밍의 이란 ?
프로그래밍 로직에서 로깅, 보안 등 공통적인 로직이 존재할수 있습니다.
이러한 공통적인 로직을 "횡단 관심사" 라고 합니다.- 공통적인 로직을 극복하기위해 AOP라는 해결책이 있습니다.
➡ AOP의 장점 : 공통적인 소스코드를 한곳에서 관리할수있습니다.
Advice : 조인포인트에서 실행되는 코드를 말합니다. (로그 출력, 트랜잭션)Join Points : 어드바이스가 실행하는 동작을 끼워 넣을수 있을때를 말합니다.Pointcut : 어드바이스가 실행되는 하나 이상의 조인 포인트를 선택하는 표현식입니다.Spring.io 에서 지원하지 않으므로, 아래의 코드를 의존성 추가를 해줍니다.dependencies {
implementation group: 'org.springframework.boot', name: 'spring-boot-starter-aop'
}
@Aspect: 흩어진 관심사를 모듈화 하는것입니다.
(@Component: 빈 등록)- 로그라는 공통로직을 처리합니다.
@Before: 어드바이스 타겟 메소드가 실행되기 이전에 value 위치 (Controller)를 실행합니다.
➡ 흩어진 관심사를 Aspect로 모듈화하고 공통된 비즈니스 로직을 분리하여 재사용하겠다는 것이 AOP의 목적입니다.