본문 바로가기
IT_Developers/JAVA

Spring - AOP 란? / 관점 지향 프로그래밍 / (1)

by 고코더 2020. 3. 19.

관점으로 본 AOP


안녕하세요.
고코더 입니다.


OOP는 훌륭한 객체 프로그래밍입니다. 하지만 공통적으로 트랜잭션처럼 반복되는 중복코드가 생기는 단점이 있습니다. 중복코드를 좀 더 줄이고자 하여 탄생한게 AOP 입니다. 
Aspect Oriented Programming 의 약자입니다. 직역하자면 "관점 지향 프로그래밍" 이라고 할 수 있습니다. 오늘은 AOP가 어떤 관점이 있는지 알아봅니다.


 1. AOP를 한줄로 정리하면?


"애플리케이션 전체에 걸쳐 사용되는 기능을 재사용 하도록 지원하는 개념"



 2. 비유


병원에 환자가 입원합니다. 맹장 수술이 필요하다고 합니다. 전날에 약을 먹고 금식을 지도하는걸 간호사가 합니다. 그리고 당일날 수술실에 환자를 눕히고 조명을 밝히고 수술 부위 소독과 매스까지 준비합니다. 그럼 의사가 들어와서 바로 수술에 들어갑니다. 
여기서 AOP는 간호사의 역할을 합니다. 어떤 수술이든 해당 과정은 동일합니다. 수술 외에 부가적으로 보면 전날 금식을 지도하고 수술을 준비하는건 매번 동일합니다. AOP는 이런 공통적 요소를 추출하여 재사용하는 기법입니다.
(더 좋은 비유 있으면 댓글을..)



 3. 부가기능 관점으로 바라보는 것


1. OOP (핵심기능 관점)

기존의 OOP는 서비스를 바라보는 시점은 핵심기능으로 바라보았습니다. 글쓰기와 통계확인이라는 서비스를 개발하고 기능별로 조립하도록 하였습니다. 자바는 다중 상속을 지원하지 않아서 핵심기능으로 바라보는 측면도 있습니다.




2. AOP (부가기능 관점)

AOP는 부가기능의 관점으로 이를 바라봅니다. 그리고 이런 공통적인 요소를 추출하는 것이고 이를 관점 지향 프로그래밍이라고 말합니다. 

- 공통 기능이 하나의 장소에서 관리
- 이 외에 모듈을 신경쓰지 않고 개발만 충실하게 하도록 한다



마무리


AOP는 계속 시리즈로 알아보겠습니다. 



댓글