1. 정의

AOP는 IoC, DI와 더불어 Spring 프레임워크의 3대 핵심 기술중 하나이다.


전통적인 설계 방법을 따랐던 경우에는 트랜잭션의 분리가 어려웠기 때문에 객체 간의 결합도를 조금이라도 낮추기 위해 관점 지향 프로그래밍을 도입하게 되었다.


주 업무가 아닌, 부가 업무가 응집력이 강한 경우에는 소스가 복잡해진다. OOP (Object Oriented Programming - 객체 지향 프로그래밍)의 보완적 개념으로 관점 지향 프로그램을 사용하고 있다. (클래스들이 공통으로 갖는 기능이나 절차 등을 하나의 것으로 묶어 빼내 별도로 관리하려는 목적)


보조 업무의 코드를 주 업무 코드에서 분리해 작성하고, 필요시에만 도킹(Docking)하여 사용하고, 스프링 프레임워크 내에서 구현하는 방법으로는 xml 스키마를 기반으로 구현하는 방법과 @Aspect 어노테이션을 이용해 구현하는 방법으로 두 가지가 있다.


가장 대표적인 부가 업무의 예로는 로그인, 트랜잭션, 보안, 캐싱 등의 작업이 있다.



2. 특징

순번 

 장점

 1

 부가 업무 소스가 한 곳으로 응집되어 응집력이 높아진다.

 2

 코드가 깔끔해지고 가독성이 높아진다.



3. 실행 순서

Spring 프레임워크에서 AOP의 구현은 프록시를 이용해 구현한다.

ㄱ. 수행할 어드바이스를 프록시에 요청한다.

ㄴ. 핵심 기능을 수행하기 전에 사용할 공통 기능을 수행한다.

ㄷ. 공통 기능을 수행한 후 핵심 기능 쪽으로 가서 핵시 기능 로직을 수행한다.

ㄹ. 핵심 기능을 수행한 후 다시 프록시로 가서 공통 기능을 수행한다.



4. 종류 (Spring이 지원하는 AOP)

ㄱ. AspectJ (eclipse.org/aspectj)

ㄴ. JBoss AOP (labs.jboss.com)

ㄷ. Spring AOP (www.springframework.org)

+ Recent posts