Spring Framework/Spring AOP APIs(11)
-
The Advisor API in Spring
Spring에서 Advisor는 포인트컷 표현식과 연관된 단일 어드바이스 객체만을 포함하는 애스펙트입니다.도입(introductions)의 특별한 경우를 제외하고, 모든 어드바이저는 모든 어드바이스와 함께 사용할 수 있습니다. org.springframework.aop.support.DefaultPointcutAdvisor는 가장 일반적으로 사용되는 어드바이저 클래스입니다. 이 클래스는 MethodInterceptor, BeforeAdvice, 또는 ThrowsAdvice와 함께 사용할 수 있습니다.Spring에서는 동일한 AOP 프록시에서 어드바이저와 어드바이스 타입을 혼합할 수 있습니다. 예를 들어, 하나의 프록시 구성에서 인터셉션 around 어드바이스, throws 어드바이스, 그리고 before..
2024.11.17 -
Advice API in Spring
Spring AOP에서 어드바이스(Advice)를 다루는 방법을 살펴보겠습니다.Advice Lifecycles각 어드바이스는 Spring 빈(bean)입니다. 어드바이스 인스턴스는 모든 타겟 객체에 공유될 수 있으며, 각 타겟 객체에 고유하게 존재할 수도 있습니다. 이는 클래스별 혹은 인스턴스별 어드바이스에 해당합니다.클래스별 어드바이스는 일반적으로 사용됩니다. 이는 프록시 객체의 상태에 의존하지 않거나 새로운 상태를 추가하지 않는 트랜잭션 어드바이저와 같은 일반적인 어드바이스에 적합합니다. 이러한 어드바이스는 메서드와 아규먼트에 대해 작동합니다.인스턴스별 어드바이스는 믹스인을 지원하기 위해 사용됩니다. 이 경우 어드바이스는 프록시 객체에 상태를 추가합니다.동일한 AOP 프록시에서 공유 어드바이스와 인스..
2024.11.17 -
Using the ProxyFactoryBean to Create AOP Proxies
Spring IoC 컨테이너(예: ApplicationContext 또는 BeanFactory)를 비즈니스 객체에 사용하는 경우(Spring에서는 이를 권장합니다), Spring의 AOP FactoryBean 구현 중 하나를 사용하는 것이 좋습니다. FactoryBean은 간접적인 레이어를 도입하여 다른 유형의 객체를 생성할 수 있게 해줍니다.Spring AOP 지원도 내부적으로 FactoryBean을 사용합니다. Spring에서 AOP 프록시를 생성하는 기본적인 방법은 org.springframework.aop.framework.ProxyFactoryBean을 사용하는 것입니다. 이를 통해 포인트컷, 적용할 어드바이스, 어드바이스의 순서에 대해 완전한 제어를 할 수 있습니다. 그러나 이러한 제어가 필요..
2023.05.16 -
Pointcut API in Spring
이 섹션에서는 Spring이 중요한 포인트컷 개념을 어떻게 처리하는지 설명합니다. Concepts스프링의 포인트컷 모델은 advice 타입과 독립적으로 포인트컷을 재사용할 수 있게 해줍니다. 동일한 포인트컷으로 다양한 어드바이스를 타겟팅할 수 있습니다.org.springframework.aop.Pointcut 인터페이스는 특정 클래스와 메서드를 타겟으로 어드바이스를 지정하기 위해 사용하는 핵심 인터페이스입니다. 전체 인터페이스는 다음과 같습니다:public interface Pointcut { ClassFilter getClassFilter(); MethodMatcher getMethodMatcher();}Pointcut 인터페이스를 두 부분으로 나누면 클래스와 메서드 매칭 부분을 재사용하고,..
2023.05.03 -
Concise Proxy Definitions
특히 트랜잭션 프록시를 정의할 때, 유사한 프록시 정의가 많이 생길 수 있습니다. 부모-자식 빈 정의와 내부 빈 정의를 사용하면 훨씬 깔끔하고 간결한 프록시 정의를 만들 수 있습니다.먼저, 다음과 같이 프록시를 위한 부모(템플릿) 빈 정의를 생성합니다:XML 기반 구성: PROPAGATION_REQUIRED 자바 기반 구성:@Configurationpublic class AppConfig { @Bean public TransactionProxyFactoryBean txProxyTemplate(TransactionManager transactionManager) { TransactionProxyFactoryBean ..
2023.05.03