티스토리 뷰

Spring/AOP

AOP를 알아보자!

세진짱 2020. 5. 22. 13:44

AOP


AOP란 무엇일까?

  • AOP란 일단 개념 자체는 흩어진 Aspect를 모듈화 할 수 있는 프로그래밍 기법이다
  • 무슨 말인지 이해가 잘 안간다. 
  • 쉽게 생각하면 주기능과 보조기능을 분리하고 보조 기능을 선택적으로 적용해서 사용한다는 개념이다
  • 예를 들어 어떠한 메소드에 로그처리 기능을 추가해야한다고 할 때
  • 만약 메소드에 직접 구현한다고 생각해보자. 이 때 로그 기능을 붙어야하는 메소드가 수백개가 된다면 어떨까
  • 하나하나 하면 분명 시간도 더 걸리고 복잡해 질 것이다. 유지관리에 문제가 생길 수 있다!
  • 이럴 때 AOP를 사용한다. 로그 기능을 보조기능으로 빼서 구현해두고 필요한 메소드에 선택적으로 붙인다..!
  • 그림으로 한번 살펴보자

  • 위 그림은 해당 각 클래스마다 부가기능이 들어가 있는 모습이다. 공통적인 기능들이 보인다

  • AOP를 적용한다면 각 부가기능 Aspect 들을 따로 만들어 관리하고 해당 기능을 원하는 클래스에 적용하면 된다
  • 개념이 참 쉬운듯 어려운듯하다..! 근데 용어는 더 어려워따..!

AOP의 용어

  • AOP는 참 어려운 용어들이 많다...! 한번 살펴보자 [ "자바 웹을 다루는 기술" 을 참고했다]
    • Aspect = 구현하고자 하는 보조 기능을 의미한다
    • Advice = Aspect의 실제 구현체(클래스)를 의미한다. 메서드 호출을 기준으로 여러 지점에서 실행된다
    • JoinPoint = Adcvice를 적용하는 지점을 의미한다. 스프링은 method Joinpoint만 제공한다
    • PointCut = Advice가 적용되는 대상을 지정한다. 패키지이름/클래스이름/매서드이름을 정규식으로 지정한다
    • Target = Acvice가 적용되는 클래스를 의미한다
    • Weaving = Advice를 주기능에 적용하는 것을 의미한다

 

AOP.. 쉽지않다...!

https://en.wikipedia.org/wiki/Aspect-oriented_programming#Terminology

 

Aspect-oriented programming - Wikipedia

In computing, aspect-oriented programming (AOP) is a programming paradigm that aims to increase modularity by allowing the separation of cross-cutting concerns. It does so by adding additional behavior to existing code (an advice) without modifying the cod

en.wikipedia.org

위키도 한번 읽어보자..! 나보다 더 좋은 설명이 있다..!

마지막으로 개념을 다시 위키를 통해 개념을 정리해보자

 

In computing, aspect-oriented programming (AOP) is a programming paradigm that aims to increase modularity by allowing the separation of cross-cutting concerns. It does so by adding additional behavior to existing code (an advice) without modifying the code itself, instead separately specifying which code is modified via a "pointcut" specification, such as "log all function calls when the function's name begins with 'set'". This allows behaviors that are not central to the business logic (such as logging) to be added to a program without cluttering the code, core to the functionality. AOP forms a basis for aspect-oriented software development.

 

대충 무슨말이냐 하면....

AOP는 기능 분리를 통한 모듈성 향상을 목표로하는 프로그래밍 패러다임이다. 이것은 코드 자체를 수정하지 않아도 기능을 추가 할 수 있다. 그래서 핵심적인 기능이 아닌 기능을(예를 들어 로깅?) 을 핵심 기능에 추가할 때 코드를 흐트러뜨리지않고 추가 가능하다..! 라는 느낌이다!

 

AOP를 조금 더 공부해봐야겠다..!

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함