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)
'Framework > Spring' 카테고리의 다른 글
iBatis vs myBatis :: iBatis 와 myBatis 비교 (0) | 2017.11.23 |
---|---|
XLSTransformer 객체를 이용한 엑셀 파일 다운로드 (1) | 2017.07.10 |
@ResponseBody (0) | 2017.06.28 |
@SessionAttributes 와 SessionStatus 객체 (0) | 2017.06.26 |
eGov :: 전자정부프레임워크란? (0) | 2017.06.21 |