Loading...
Spring Framework Reference Documentation 7.0.2의 Spring AOP Capabilities and Goals의 한국어 번역본입니다.
아래의 경우에 피드백에서 신고해주신다면 반영하겠습니다.
감사합니다 :)
Spring AOP는 순수 Java로 구현됩니다. 특별한 컴파일 과정이 필요하지 않습니다. Spring AOP는 클래스 로더 계층 구조를 제어할 필요가 없으므로 서블릿 컨테이너나 애플리케이션 서버에서 사용하기에 적합합니다.
Spring AOP는 현재 메서드 실행 조인 포인트(즉, Spring bean의 메서드 실행에 대한 어드바이징)만을 지원합니다. 필드 인터셉션은 구현되어 있지 않지만, core Spring AOP API를 깨뜨리지 않고 필드 인터셉션에 대한 지원을 추가할 수 있습니다. 필드 접근과 업데이트 조인 포인트에 대해 어드바이스해야 한다면 AspectJ와 같은 언어를 고려하십시오.
Spring AOP의 AOP에 대한 접근 방식은 대부분의 다른 AOP 프레임워크와 다릅니다. 목표는 가장 완전한 AOP 구현을 제공하는 것이 아닙니다(Spring AOP는 상당히 유능함에도 불구하고).
오히려, 목표는 AOP 구현과 Spring IoC 간의 긴밀한 통합을 제공하여 엔터프라이즈 애플리케이션에서 흔히 발생하는 문제를 해결하는 데 도움을 주는 것입니다.
예를 들어, Spring Framework의 AOP 기능은 일반적으로 Spring IoC 컨테이너와 함께 사용됩니다. Aspect는 일반적인 bean 정의 구문을 사용하여 구성됩니다(비록 이것이 강력한 "자동 프록시" 기능을 가능하게 하더라도). 이것은 다른 AOP 구현과의 중요한 차이점입니다.
Spring AOP로는 매우 세밀한 객체(일반적으로 도메인 객체)에 대해 어드바이스하는 등의 작업을 쉽게 또는 효율적으로 수행할 수 없습니다. 이러한 경우에는 AspectJ가 최선의 선택입니다. 그러나 우리의 경험에 따르면 Spring AOP는 AOP에 적합한 엔터프라이즈 Java 애플리케이션의 대부분 문제에 대해 훌륭한 해결책을 제공합니다.
Spring AOP는 포괄적인 AOP 솔루션을 제공하기 위해 AspectJ와 경쟁하려고 하지 않습니다. 우리는 Spring AOP와 같은 프록시 기반 프레임워크와 AspectJ와 같은 풀블로운 프레임워크가 모두 가치 있으며 경쟁 관계가 아니라 상호 보완적이라고 믿습니다.
Spring은 일관된 Spring 기반 애플리케이션 아키텍처 내에서 모든 AOP 사용을 가능하게 하기 위해 Spring AOP와 IoC를 AspectJ와 원활하게 통합합니다. 이 통합은 Spring AOP API나 AOP Alliance API에 영향을 주지 않습니다. Spring AOP는 계속해서 이전 버전과 호환됩니다. Spring AOP API에 대한 논의는 다음 장을 참고하십시오.
Spring Framework의 중심 원칙 중 하나는 비침투성(non-invasiveness)입니다. 이것은 비즈니스나 도메인 모델에 프레임워크 특화 클래스와 인터페이스를 도입하도록 강요받지 말아야 한다는 생각입니다. 그러나 일부 곳에서는 Spring Framework가 코드베이스에 Spring Framework 특화 의존성을 도입할 수 있는 옵션을 제공합니다. 이러한 옵션을 제공하는 근거는 특정 시나리오에서 어떤 특정 기능을 그러한 방식으로 읽거나 코드 작성하는 것이 훨씬 더 쉬울 수 있기 때문입니다. 그러나 Spring Framework는 (거의) 항상 선택권을 제공합니다. 어떤 옵션이 특정 유스 케이스나 시나리오에 가장 잘 맞는지에 대해 정보에 기반한 결정을 내릴 자유가 여러분에게 있습니다. 이 장과 관련된 그러한 선택 중 하나는 어떤 AOP 프레임워크(그리고 어떤 AOP 스타일)를 선택할 것인가 하는 것입니다. AspectJ, Spring AOP, 또는 둘 다를 선택할 수 있습니다. 또한 @AspectJ 어노테이션 스타일 접근 방식이나 Spring XML 설정 스타일 접근 방식 중에서 선택할 수 있습니다. 이 장에서 @AspectJ 스타일 접근 방식을 먼저 소개한다고 해서 Spring team이 @AspectJ 어노테이션 스타일 접근 방식을 Spring XML 설정 스타일보다 선호한다는 의미로 받아들여서는 안 됩니다. 각 스타일의 장단점에 대한 보다 완전한 논의는 Choosing which AOP Declaration Style to Use를 참고하십시오.
AOP Concepts
AOP Proxies