Aspect Oriented Programming with Spring

2024. 11. 17. 13:18Spring Framework/Aspect Oriented Programming with Spring

[공식문서]

AOP(Aspect-Oriented Programming)는 프로그램 구조를 생각하는 또 다른 방법을 제공하여 OOP(Object-Oriented Programming)를 보완합니다. OOP에서의 주요 모듈화 단위는 클래스인 반면, AOP에서는 모듈화 단위가 aspect입니다. aspect는 트랜잭션 관리와 같은 여러 타입과 객체에 걸쳐 있는 문제를 모듈화할 수 있게 해줍니다. 이러한 문제는 AOP 문헌에서 흔히 crosscutting concerns라고 불립니다.

Spring의 주요 구성 요소 중 하나는 AOP 프레임워크입니다. Spring IoC 컨테이너는 AOP에 의존하지 않으므로(AOP를 사용하지 않아도 된다는 의미) AOP를 꼭 사용해야 하는 것은 아니지만, AOP는 Spring IoC를 보완하여 매우 강력한 미들웨어 솔루션을 제공합니다.

 

AspectJ pointcuts을 사용하는 Spring AOP

Spring은 schema-based approach이나 @AspectJ 애노테이션 스타일을 사용하여 사용자 정의 aspect을 작성하는 간단하고 강력한 방법을 제공합니다. 이 두 스타일 모두 완전히 타입화된 advice과 AspectJ pointcut 언어의 사용을 제공하면서도 여전히 Spring AOP를 사용하여 위빙(weaving)합니다.

이 장에서는 스키마 기반 및 @AspectJ 기반 AOP 지원에 대해 논의합니다. 보다 저수준의 AOP 지원은 다음 장에서 다루어집니다.

Spring Framework에서 AOP는 다음과 같은 목적으로 사용됩니다:

  • 선언적(declarative) 엔터프라이즈 서비스를 제공하기 위해. 가장 중요한 서비스는 선언적(declarative) 트랜잭션 관리입니다.
  • 사용자들이 OOP를 AOP와 함께 사용하여 사용자 정의 aspect를 구현할 수 있도록 하기 위해.

만약 여러분이 일반적인 선언적 서비스나 풀링과 같은 다른 미리 패키지된 선언적 미들웨어 서비스에만 관심이 있다면, Spring AOP를 직접 다룰 필요는 없으며 이 장의 대부분을 건너뛰어도 됩니다.

 

 

 

'Spring Framework > Aspect Oriented Programming with Spring' 카테고리의 다른 글

Choosing which AOP Declaration Style to Use  (0) 2024.11.17
Proxying Mechanisms  (1) 2024.11.17
Introductions  (1) 2024.11.17
Declaring a Pointcut  (0) 2024.11.17
Declaring an Aspect  (0) 2024.11.17