728x90
Spring AOP (Aspect Oriented Programming)
AOP는 Aspect Oriented Programming의 약자로 관점 지향 프로그래밍이라고 불린다.
관점 지향은 쉽게 말해 어떤 로직을 기준으로 핵심적인 관점, 부가적인 관점으로 나누어서 보고 그 관점을 기준으로 각각 모듈화하겠다는 것이다. 여기서 모듈화란 어떤 공통된 로직이나 기능을 하나의 단위로 묶는 것을 말한다.
예를 들어 핵심적인 관점은 결국 우리가 적용하고자 하는 핵심 비즈니스 로직이 된다. 또한 부가적인 관점은 핵심 로직을 실행하기 위해서 행해지는 데이터베이스 연결, 로깅, 파일 입출력 등을 예로 들 수 있다.
AOP에서 각 관점을 기준으로 로직을 모듈화한다는 것은 코드들을 부분적으로 나누어서 모듈화하겠다는 의미다. 이때, 소스 코드상 다른 부분에 계속 반복해서 쓰이는 코드들을 발견할 수 있는데 이것들을 흩어진 관심사(Crosscutting Concerns)라 부른다.
(+) OOP로 독립적으로 분리하기 어려운 부가 기능을 모듈화하는 방식이다. AOP는 핵심 비즈니스 로직과 부가 기능 Aspect를 분리하는 등 OOP를 보완하는 역할이다.
위와 같이 흩어진 관심사를 관점(Aspect)로 모듈화하고 비즈니스 로직에서 분리하여 재사용하겠다는 것이 AOP의 취지다.
Ex)
위의 그림에서 종단관심이 핵심관심이며 횡단관심이 부가 기능이다.
'Spring' 카테고리의 다른 글
[Spring] 🌱ResponseEntity란 / Spring Boot에서 Response하기 (0) | 2022.09.04 |
---|---|
[Spring] 🌱 HelloController (0) | 2022.07.22 |
[Spring] 🌱 Spring 이란 ( + DI, IoC) (4) | 2022.07.07 |