AOP(관점지향프로그래밍)이란?


AOP(관점지향프로그래밍)이란?

AOP(Aspect Oreiented Programming : 관점지향 프로그래밍) 이란 무엇인가

OOP를 먼저 이해해보자

OOP(Object Oreiented Programming : 객체지향 프로그래밍)을 먼저 이해해보자.
객체지향이란 관심사가 같은 기능과 데이터를 모아서 재사용이 가능한 객체로 캡슐화하는것을 의미한다.
하지만 로그, 권한확인, 예외처리 등 핵심기능과 관계는 없지만 반드시 필요한 코드들이 삽입되고 모듈화가 어려워진다. -> 반복적인 코드를 삽입하지 않기 위해 만든 객체(class)인데, 그 class를 반복적으로 사용하면 코드의 재사용성이 떨어지고 생산성이 낮아짐.

그래서 나온게 AOP

AOP는 application전반에 사용되는 기능을 여러 코드에 쉽게 적용할수있도록 하는 프로그래밍.
예를들면 게시판이라는 핵심 기능과 권한, 로깅, 트랜잭션 등의 부가 기능 사이에는 공통점이 없음.
하지만 이러한 부가기능들은 프로그램 시작/종료시점에 꼭 적용되어야함.
-> 비즈니스 로직에 부가기능을 직접 삽입하지 말고, 부가기능이 실행 될 시점정보만 얻어서 부가기능이 자동으로 실행하게하자.

OOP를 더 OOP하게 만들어주는 AOP

결국 OOP 객체는 자신의 관심 기능만 가질수있게되고 AOP를 이용해 부가기능 코드를 직접 호출하지 않아도됨. AOP는 공통된 부가기능을 모듈화한 뒤 필요한 지점에 기능을 삽입한다.

AOP 용어

1. 관점(Aspect)

공통적으로 적용될 기능. (1개이상의 포인트컷 + 어드바이스)

2. 어드바이스(Advice)

관점의 구현체. joinpoint에 삽입되어 동작.

3. 조인포인트(JoinPoint)

어드바이스를 적용하는 지점.

4. 포인트컷(Pointcut)

어드바이스를 적용할 조인포인트를 선별하는 과정. 그 기능을 정의한 모듈.

5. 타깃(Target)

어드바이스를 받을 대상

6. 위빙(Weaving)

어드바이스를 적용하는것. (공통코드를 원하는 대상에 삽입하는것)




© 2020. by berrrrr

Powered by berrrrr