티스토리 뷰

Java/Spring

AOP 개요와 용어

작은 거인 2017. 1. 9. 16:09

핵심 기능과 부가기능

 

 - 업무 로직을 포함하는 기능을 핵심 기능 (Core Concerns)

 - 핵심 기능을 도와주는 부가적인 기능을 부가기능 (Cross-cutting Concerns)

 - 객체 지향의 기본 원칙을 적용하여도 핵심 기능에서 부가 기능을 분리해서 모듈화 하는 것은 매우 어려움.



출처 : Tacademy



AOP(Aspect Oriented Programming)-관점 지향 프로그래밍의 개요


AOP는 어플리케이션에서의 관심자의 분리(기능의 분리) 즉, 핵심적인 기능에서 부가적인 기능을 분리한 부가기능을 애스펙트(Aspect)라는 독특한 모듈형태로 만들어서 설계하고 개발하는 방법

 - OOP를 적용하여도 핵심 기능에서 부가 기능을 쉽게 분리된 모듈로 작성하기 어려운 문제점을 AOP가 해결해준다고 볼 수 있다.

 - AOP는 부가기능을 Aspect로 정의하여, 핵심기능에서 부가기능을 분리함으로써 핵심 기능을 설계하고 구현할때 객체 지향적인 가치를 지킬 수 있도록 도와주는 개념.



Aspect


 - 애스팩트는 부가기능을 정의한 코드인 어드바이스(Advice)와 어드바이스를 어디엣 적용하는지를 결정하는 포인트컷(PointCut)을 합친 개념.

  * Advice + PointCut = Aspect

 - AOP 개념을 적용하면 핵심기능 코드 사이에 침투된 부가기능을 독립적인 에스펙트로 구분해 낼 수 있다.

 - 구분된 부가기능 애스펙트를 런타임 시에 필요한 위치에 동적으로 참여하게 할 수 있다.



AOP용어


타겟(Target)

 - 핵심 기능을 담고 있는 모듈로, 타겟은 부가 기능을 부여할 대상이 된다.


어드바이스(Advice)

 - 어드바이스는 타겟에 제공할 부가기능을 담고 있는 모듈이다.


조인 포인트(JointPoint)

 - 어드바이스가 적용될 수 있는 위치를 말함

 - 즉, 타겟 객체가 구현한 인터페이스의 모든 메서드는 조인 포인트가 된다.


포인트컷(PointCut)

 - 어드바이스를 적용할 타겟의 메서드를 선별하는 정규표현식

 - 포인트컷 표현식은 execution으로 시작하고, 메서드의 Signature를 비교하는 방법을 주로 이용


애스펙트(Aspect)

 - 애스펙트는 AOP의 기본 모듈

 - 애스펙트 = 어드바이스 + 포인트컷

 - 애스펙트는 싱글턴 형태의 객체로 존재.


어드바이저(Advisior)

 - 어드바이저 = 어드바이스 + 포인트컷

 - 어드바이저는 Spring AOP에서만 사용되는 특별한 용어.


위빙(Weaving)

 - 위빙은 포인트컷에 의해서 결정된 타겟의 조인 포인트에 부가기능 (어드바이스)을 삽입하는 과정을 뜻한다.

 - 위비은 AOP가 핵심기능(타겟)의 코드에 영향을 주지 않으면서 필요한 부가기능(어드바이스)을 추가할 수 있도록 해주는 식심적인 처리과정



Spring AOP의 구현 방식


XML 기반의 POJO 클래스를 이용한 AOP 구현

 - 부가 기능을 제공하는 Advice 클래스를 작성

 - XML 설정 파일에 <aop:config>태그를 이용하여 애스펙트를 설정. (즉, 어드바이스와 포인트컷 설정)


@Aspect어노테이션을 이용한 AOP 구현

 - @Aspect 어노테이션을 이용해서 부가기능을 제공하는 Aspect 클래스를 작성. 이때 Aspect 클래스는 어드바이스를 구현하는 메서드와 포인트컷을 포함.

 - XML 설정 파일에 <aop:aspectj-autoproxy />를 설정.



'Java > Spring' 카테고리의 다른 글

WYSIWYG Editor Summernote 도입  (1) 2017.04.05
예제 보고 따라하다 겪는 LifeCycleException  (6) 2017.01.13
Spring JDBC  (1) 2017.01.08
사용자 관리 프로젝트 아키텍쳐  (0) 2017.01.08
Annotation을 이용한 Bean 등록  (0) 2017.01.07
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
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 31
글 보관함