본문 바로가기

아는 만큼 보인다/Spring Framework

AOP (Aspect Oriented Programming) 관점지향프로그래밍

스프링의 3가지 주요 특징이다.

1. IoC/DI => 전략 패턴을 바탕으로 스프링이 runtime시에 의존관계를 주입해준다.

2. 서비스 추상화 => 다양한 서비스 기술들의 추상화 계층을 제공함으로써 확장성을 높여준다

3. AOP => 데코레이터 패턴을 바탕으로(프록시 오브젝트를 활용하는) 관점 지향 프로그래밍을 지원한다.


AOP ??

관점지향프로그래밍..

객체지향프로그래밍(OOP)의 서포터다.

부가기능이 핵심기능의 로직안에 들어가지 않도록.. 부가기능을 핵심기능으로부터 분리하여 모듈화함으로써

핵심기능이 완전하게 객체 지향 프로그래밍될 수 있도록 도와준다.


스프링의 AOP는 다이나믹한 프록시 오브젝트를 활용하여
간접적으로 부가기능을 수행한다. (직접 .class파일을 수정하지 않는다)

스프링은 아래의 기술/기법들의 다양한 조합을 통해  AOP를 지원한다.

1. IoC/DI 컨테이너 (advice, pointcut, advisor 등의 주입)

2. 다이나믹 프록시 (간접적인 AOP 지원)

3. 데코레이터 패턴 (프록시 오브젝트가 타겟 메소드 호출 시점에 부가기능 제공)

4. 프록시 패턴 

5. 자동프록시 생성기법(프록시 팩토리 빈)

6. 빈후처리기