[Spring] AOP(관점 지향 프로그래밍)

BBANG-JUN·2020년 8월 26일
0

🍃Spring

목록 보기
2/26
post-thumbnail

1. AOP(Aspect Orient Programming)

: AOP는 Java의 OOP(Object Oriented Programming) 객체지향 프로그래밍이라는 단어와 앞 단어만 다르다.

AOP는 Java의 OOP를 대신해서 새로 생긴 개념이 아니라, OOP를 더욱 OOP답게 사용할 수 있게 도와준다.

OOP인 Java는 객체를 재사용함으로써 반복되는 코드의 양을 굉장히 많이 줄일수가 있었다.

그렇지만, 객체의 재사용에도 불구하고 반복되는 코드를 없앨 수 없었는데, 로그, 권한 체크, 인증, 예외 처리 등 필수적으로 해야하기 때문에 소스에서 반복될 수 밖에 없는 부분도 있다.

AOP는 이러한 문제를 해결해준다.

먼저 OOP의 흐름은

이와 같은 코드로 반복적으로 삽입될 수 밖에 없다.

하지만, AOP는 이런 관심을 종단으로 삽입할 수 있도록 해준다.

기존의 프로그래밍에서 각 객체별로 처리했던 것을 각 관점별로 외부에서 접근하는 것이 AOP의 핵심이다.

2. AOP 주요 개념

1) 관점(Aspect)

구현하고자 하는 횡단 관심사의 기능을 의미한다. 한개 이상의 포인트컷과 어드바이스의 조합으로 만들어진다.

  • 핵심기능에 부가되어 의미를 갖는 특별한 모듈입니다.

※ 함께 사용합니다!

  • 부가될 기능을 정의한 어드바이스
  • 어드바이스를 어디에 적용할지를 결정하는 포인트컷

2) 조인포인트(Join point)

관점(Aspect)를 삽입하여 어드바이스가 적용될 수 있는 위치를 말한다.

  • Spring에서는 메소드 조인포인트만 제공하고 있으며, 메소드를 가리킨다고 생각하면 된다.

3) 어드바이스(Advice)

관점(Aspect)의 구현체로 조인 포인트에 삽입되어 동작하는 코드이다.
어드바이스는 조인포인트와 결합하여 동작하는 시점에 따라 5개로 구분된다.

Before Advice : 조인포인트 전에 실행되는 advice
After returning advice : 조인포인트에서 성공적으로 리턴 된 후 실행되는 advice
After throwing advice : 예외가 발생하였을 경우 실행되는 advice
After advice : 조인포인트에서 메서드의 실행결과에 상관없이 무조건 실행되는 advice, 자바의 finally와 비슷한 역할을 한다.
Around advice : 조인포인트의 전 과정(전, 후)에 수행되는 advice

4) 포인트컷(PointCut)

어드바이스를 적용할 조인 포인트를 선별하는 과정이나 그 기능을 정의한 모듈을 의미한다. 패턴매칭을 이용하여 어떤 조인포인트를 사용할 것인지 결정한다.

  • 부가기능이 적용될 대상(메소드)를 선정하는 방법을 얘기합니다.
	즉, 어드바이스를 적용할 조인포인트를 선별하는 기능을 정의한 모듈을 얘기합니다.

5) 타겟(Target)

어드바이스를 받을 대상, 즉 객체를 의미한다. 비지니스로직을 수행하는 클래스일수도 있지만, 프록시 객체(Object)가 될 수도 있다.

  • 부가기능을 부여할 대상을 얘기합니다.

참고 자료

3. AOP 장점

  • 어플리케이션 전체에 흩어진 공통 기능이 하나의 장소에서 관리된다는 점
  • 다른 서비스 모듈들이 본인의 목적에만 충실하고 그외 사항들은 신경쓰지 않아도 된다는 점
profile
🔥 머릿속으로 생각하지만 말고, 행동으로 보여줘

0개의 댓글