프로필사진
AOP - AOP란? AOP vs OOP

2019. 11. 13. 12:12🔴 Spring

300x250

AOP (Aspect Oriented Programming, 관점지향프로그래밍)
# 스프링의 또 하나의 기반기술
# 어플리케이션 전체에 걸쳐 사용되는 기능을 재사용할 수 있도록!


AOP(관점지향), OOP(객체지향) 의 차이점?

→ AOP는 OOP를 더욱더 OOP답게 사용할 수 있도록 도와주는 개념!
(기존에 OOP에서 바라보던 관점을 다르게 해서 부가기능적인 측면에서 보았을 때 공통된 요소를 추출하는 것, "AOP = 크로스 컷팅")

OOP: 비지니스 로직을 모듈화함

객체를 상속/위임을 통해 재사용 → 반복되는 코드의 양을 줄여줌
But, 반복되는 코드를 없앨 수 없는 상황이 생김 + 어플리케이션 전체에서 사용되는 부가기능들을 모듈화하기 어려움

=> AOP 등장! : 인프라 / 부가기능을 모듈화함 ex) 권한체크, 인증, 예외처리 등

즉, 기능을 비지니스 로직과 공통 모듈로 구분한 후 개발자의 코드 밖에서 필요할 때 비지니스 로직에 삽입하여 실행
ex) 게시판 기능에서 '권한체크, 인증, 예외처리 등'은 필요한 시점에 자동으로 삽입되도록 함

장점:
- 어플리케이션 전체에 흩어진 공통 기능이 하나의 장소에서 관리됨
- 다른 서비스 모듈들이 다른 사항들을 신경쓰지 않도록 해줌 (개발자는 핵심로직에만 집중하면 됨)
- 중복 코드 제거 / 효율적인 유지보수 / 높은 생산성 / 재활용성 극대화 / 변화수용 용이


참고:
https://doublesprogramming.tistory.com/115

https://jojoldu.tistory.com/71

300x250