ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [WEB:] AOP와 OOP의 차이
    비전공자 공부일기/:: WEB & Front-End 2019. 9. 4. 17:12

    2019. 09. 04

     

     

    지금까지 자바는 객체지향 프로그램이라는 말을 많이 들어보았을 것이다.

     

    OOP가 바로 지금까지 우리가 잘 알고 있는 [객체지향 프로그램]으로, Object Oriented Programming의 준말이다.

     

    한편 AOP는 Aspect Oriented Programming의 준말로, 한국어로는 [관점지향 프로그램]이라고 한다. 애플리케이션의 핵심적인 기능과 부가적인 기능을 분리해, Aspect라는 모듈로 만들어 설계하고 개발하는 방법이다. 

     

    그러나 이 둘은 상반되는 개념이 아니다. 오히려 OOP를 더욱 OOP답게 사용할 수 있도록 하는 게 AOP이다.

     

    기존 포함관계를 사용하던 방식을 상속 방식으로 사용하게 한다. 자기가 모든 기능을 가지고있어야 하는데 기능 갖고 있는 다른 클래스를 포함시켜서 사용하면 객체지향스럽지 않음

     

    핵심적인 기능과 부가적인 기능을 분리해서 다음과 같이 부른다.

     

    횡단 관심(Crosscut Concern) : 여러 객체에서 공통적으로 작성해야 하는 부분. ex)보안, 로깅, 트랜젝션, 등등

    핵심 관심(Core Concern) : 비즈니스 로직.

     

    핵심관심이 정의된 각 클래스에서 횡단관심코드를 가지고 와 심어 사용하는 방식인데, 이 기법을 위빙Weaving이라고 한다.

     

    이 외에도 핵심 용어들을 살펴보자.

     

     

    AOP의 핵심 용어들

     

    1. JoinPoint

    어떤 시점에 삽입할 것인가? - 실행 하려는 특정 위치

       1) befor : 메서드 실행 전 
       2) after : 메서드 실행 후
       3) AfterReturning : 반환된 후
       4) AfterThrowing : 예외가 던져지는 시점
       5) around : 메서드 실행 전, 후

     

    2. PointCut

    어디에 삽입할 것인가?

    - 어떤 클래스의 어떤 메소드에 어느 jointpoint를 사용할 것인가?

     

    3. Advice

    무엇을 삽입할 것인가?

    - 각 JoinPoint에 삽입되어 동작할 수 있는 코드

    - 부가적인 기능(횡단관심)을 정의한 코드

     

    4. Weaving 작업 :

    - 언제, 어디에, 무엇을을 가지고 => Advice를 핵심로직코드에 적용하는 것

    - 특별한 컴파일러를 통해 자바VM에서 사용될 수 있는 코드로 만들어지는 것

    - 포인트컷으로 지정한 핵심 관심 메소드가 호출될때, 어드바이스에 해당하는 횡단 관심 메소드를 결합하는것

    - Pointcut에 의해서 결정된 조인포인트에 지정된 Advice를 삽입하는 과정

    - AOP가 기존의 핵심관심모듈의 코드에 전혀 영향을 주지 않으면서 필요한 횡단 관심 기능을 추가할 수 있게 해주는 핵심적인 처리 과정

     

    5. Aspect

    - 어드바이스(Advice)와 포인트컷(PointCut)을 합친 개념
    - Advice + PointCut = Aspect

     

    5. Proxy

    - 클라이언트와 타깃 사이에 존재하면서 부가기능을 제공하는 오브젝트

    - 어떤 핵심 기능을 수행 하기 전과 후에 공통 기능을 수행한다고 할 때, aspect가 곧바로 핵심 기능에서 실행되는 것이 아니라, proxy(대행자)에서 공통 기능이 수행하도록 하는 것

    댓글

coding wanee