Spring - AOP(Aspect Oriented Programming)
목록  
제 목 AOP(Aspect Oriented Programming)
작성자 박세청 작성일 2013/11/15 02:42


AOP(Aspect Oriented Programming)

Posted by 영혼과영혼의양식

AOP

- 관점지향프로그래밍

- 문제를 해결하기 위한 핵심 관심 사항과 전체에 적용되는 공통 관심 사항을 기준으로 프로그래밍 함으로써 공통 모듈을 여러 코드에 쉽게 적용

- 공통 관심 사항을 구현한 코드를 핵심 로직을 구현한 코드 안에 삽입하는 것을 말함

●AOP 용어(매우 중요 ★★★★★)

Advice

언제 공통 관심 기능을 핵심 로직에 적용할 지를 정의

JoinPoint

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

PointCut

JoinPoint의 부분 집합으로서 실제로 Advice가 적용되는 JoinPoint를 나타냄, 스프링에서는 정규 표현식이나 AspectJ의 문법을 이용하여 PointCut을 정의

Weaving

Advice를 핵심 로직 코드에 적용하는 것

Aspect

여러 객체에 공통으로 적용되는 공통 관심 사항을 Aspect라고 함. 트랜잭션이나 보안 등이 Aspect의 좋은 예임.

●Weaving의 3가지 방식

▶ 컴파일 시에 Weaving

▶ 클래스 로딩 시에 Weaving

▶ 런타임 시에 Weaving

●스프링은 3가지 방식으로 AOP를 구현

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

▶ AspectJ 5/6에서 정의한 @Aspect 어노테이션 기반의 AOP 구현

▶ 스프링 API를 이용한 AOP 구현

구현 가능한 Advice 종류

종 류

설 명

Before Advice 대상 객체의 메서드 호출 전에 공통 기능을 실행
After Returning Advice 대상 객체의 메소드가 예외 없이 실행한 이후에 공통 기능을 실행
After Throwing Advice

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

After Advice 대상 객체의 메서드를 실행하는 도중에 예외가 발생했는지의 여부와 상관없이 메서드 실행 후 공통 기능을 실행(try ~ catch ~ finally의 finally 블록과 비슷)

Around Advice

대상 객체의 메소드 실행 전, 후 또는 예외 발생 시점에 공통 기능을 실행

[참고자료] Spring 3.0 프로그래밍 - 최범균

저작권
Creative Commons License




이전글 스프링 MVC Hello World
다음글 @Autowired

목록