Spring AOP?
2025-11-02
Spring을 처음 접할 때, DI와 IoC, AOP를 세트로 배우는 경우가 많다.
DI는 Dependency Injection, IoC는 Inversion of Control. SOLID 원칙을 미리 배웠다면, 빠르게 이해할 수 있는 동작이다.
그러면, AOP는 무엇일까? AOP는 Aspect Oriented Programming으로 관점 지향 프로그래밍의 뜻을 가진다.
사실 AOP도 SOLID 원칙을 미리 배웠다면, 쉽게 이해할 수 있다. AOP는 OCP를 완전하게 이루어낼 수 있는 패러다임이다.
하지만 DI와 IoC에 AOP를 세트로 배우는 사람들은 AOP == 횡단 관심사 관리 정도로 이해하는 경우가 많다.
경험상 AOP == 횡단 관심사 관리로 이해하는 사람을 더 많이 만났던 것 같다.
내가 생각하는 AOP는 OCP가 본질. 즉 기존 코드 변경 없이, 기능을 확장할 수 있도록 도와주는 패러다임이다.
AOP가 이루어내는 것도 OCP를 보장하는 것과 매우 동일하다.
하지만, Spring을 처음 배울 때 AOP를 함께 배우면 쉽게 이해하기엔 어려울 것 같다.