Why AOP
Why AOP
AOP
- AOP란 Aspect oriented programming의 약자
- 프로그래밍 패러다임의 일종으로, 각 기능에서 공통 관심사(기능)를 분리시키는 개념
- 공통 기능 예시: 로그, 인증, 보안, 예외 처리, 시간 측정 등
- OOP와 상충되는 개념이 아닌 OOP를 보완하고 확장시키는 개념
- 예시
- 함수의 호출 시간을 측정하는 기능이 필요한 경우, 모든 함수에 시간을 측정하는 코드를 넣는 것은 비효율적
- 그렇다고 시간을 측정하는 클래스를 상속받기도 힘듦
- 이 때
시간을 측정하는 기능
은 여러 함수에서 필요한 공통 관심사(기능)이기 때문에 별도로 분리해서 작성해야 함 - 각 함수(모듈)는 핵심 기능(비즈니스 로직)만 작성하고, 공통 기능은 코드 밖에서 필요한 시점에 실행됨
Spring에서 AOP가 필요한 이유
- Java는 다중 상속이 불가능하기 때문에, 공통 기능을 상속으로 해결하기에는 제약이 존재
- 공통 기능을 핵심 기능으로부터 분리하기 때문에 코드가 깔끔하고 명확해짐
- 코드의 모듈화가 수행되기 때문에 생산성 및 유지보수성 증가, 중복 감소
References
- https://mangkyu.tistory.com/121
- https://velog.io/@gillog/AOP%EA%B4%80%EC%A0%90-%EC%A7%80%ED%96%A5-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D