ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Spring] AOP(Aspect Oriented Programming) 란?
    Spring/용어 2020. 3. 22. 16:16
    반응형

    AOP(Aspect Oriented Programming) 란?

     공통의 관심 사항을 적용해서 발생하는 의존 관계의 복잡성과 코드 중복을 해소해 주는 프로그래밍 기법입니다.

     

    AOP 용어

    • Advice

    언제 공통 관심 기능을 핵심 로직에 적용할 지를 정의하고 있습니다. '메서드를 호출하기 전/후(언제)에 트랜잭션(공통 기능)을 적용한다.'

    • Joinpoint

    Advice를 적용 가능한 지점을 의미합니다. 메서드 호출, 필드 값 변경 등이 joinpoint에 해당합니다.

    • Pointcut

    Joinpoint의 부분 집합으로 실제로 Advice가 적용되는 Joinpoint를 나타냅니다. 스프링에서는 정규 표현식이나 AspectJ의 문법을 이용하여 Pointcut을 정의할 수 있습니다.

    • Weaving 

    어떤 Advice를 어떤 Pointcut에 적용하는 것을 weaving 이라고 합니다.

    • Aspect

    여러 객체에 공통으로 적용되는 공통 관심 사항을 Aspect라고 합니다. 보안, 로깅, 트랜잭션 등이 있습니다.

     

    Spring에서의 AOP

     스프링은 자체적으로 AOP를 지원하고 있기 때문에 트랜잭션이나 로깅, 보안과 같이 여러 모듈에서 공통으로 필요한 기능들을 분리해서 각 모듈에 적용할 수 있습니다.

     

    AOP 구현 방식

    1.XML 스키바 기반의 AOP 구현

    2.@Aspect 어노테이션 기반의 AOP 구현

     스프링은 어떤 방식을 사용하더라도 내부적으로는 프록시를 이용하여 AOP가 구현하고 있습니다. Aspect의 적용 대상(target)이 되는 객체에 대한 프록시를 만들어 제공하며, 대상 객체를 사용하는 코드는 대상 객체에 직접 접근하기 보다는 프록시를 통해서 간접적으로 접근하게 됩니다. 이 과정에서 프록시는 공통 기능을 실핸한 뒤 대상 객체의 실제 메서드를 호출하거나 또는 대상 객체의 실제 메서드가 호출된 뒤 공통 긴으을 실행하게 됩니다.

     

    Advice 종류

    • before

    대상 객체의 메서드 호출 전에 공통 기능이 실행합니다.

    • after-returning

    대상 객체의 메서드가 예외 없이 실행한 이후에 공통 기능을 실행합니다.

    • after-throwing

    대상 객체의 메서드를 실행하는 도중 예외가 발생한 경우에 공통 기능을 실행합니다.

    • after

    대상 객체의 메서드를 실행하는 도중에 예외가 발생했는지의 여부와 상관없이 메서드 실행 후 공통 기능을 실행합니다.

    • around

    대상 객체의 메서드 실행 전, 후 또는 예외 발생 시점에 공통 기능을 실행하는데 사용됩니다.

    반응형

    'Spring > 용어' 카테고리의 다른 글

    [Spring] DI(Dependency Injection) 란?  (0) 2020.03.22

    댓글

Designed by Tistory.