전체 글(386)
-
Manipulating Advised Objects
AOP 프록시를 생성하는 방법에 관계없이, org.springframework.aop.framework.Advised 인터페이스를 사용하여 프록시를 조작할 수 있습니다. AOP 프록시는 구현한 다른 인터페이스에 관계없이 이 인터페이스로 캐스팅할 수 있습니다. 이 인터페이스에는 다음과 같은 메서드들이 포함되어 있습니다:Advisor[] getAdvisors();void addAdvice(Advice advice) throws AopConfigException;void addAdvice(int pos, Advice advice) throws AopConfigException;void addAdvisor(Advisor advisor) throws AopConfigException;void addAdvisor(..
2024.11.17 -
Creating AOP Proxies Programmatically with the ProxyFactory
Spring을 사용하면 AOP 프록시를 프로그래밍 방식으로 쉽게 생성할 수 있습니다. 이를 통해 Spring IoC에 의존하지 않고도 Spring AOP를 사용할 수 있습니다.대상 객체가 구현한 인터페이스는 자동으로 프록시됩니다. 아래 예시는 하나의 인터셉터와 하나의 어드바이저를 사용하여 대상 객체에 대한 프록시를 생성하는 방법을 보여줍니다:ProxyFactory factory = new ProxyFactory(myBusinessInterfaceImpl);factory.addAdvice(myMethodInterceptor);factory.addAdvisor(myAdvisor);MyBusinessInterface tb = (MyBusinessInterface) factory.getProxy();첫 번째 단..
2024.11.17 -
The Advisor API in Spring
Spring에서 Advisor는 포인트컷 표현식과 연관된 단일 어드바이스 객체만을 포함하는 애스펙트입니다.도입(introductions)의 특별한 경우를 제외하고, 모든 어드바이저는 모든 어드바이스와 함께 사용할 수 있습니다. org.springframework.aop.support.DefaultPointcutAdvisor는 가장 일반적으로 사용되는 어드바이저 클래스입니다. 이 클래스는 `MethodInterceptor, BeforeAdvice, 또는 ThrowsAdvice와 함께 사용할 수 있습니다.Spring에서는 동일한 AOP 프록시에서 어드바이저와 어드바이스 타입을 혼합할 수 있습니다. 예를 들어, 하나의 프록시 구성에서 인터셉션 around 어드바이스, throws 어드바이스, 그리고 befor..
2024.11.17 -
Advice API in Spring
Spring AOP에서 어드바이스(Advice)를 다루는 방법을 살펴보겠습니다.Advice Lifecycles각 어드바이스는 Spring 빈(bean)입니다. 어드바이스 인스턴스는 모든 타겟 객체에 공유될 수 있으며, 각 타겟 객체에 고유하게 존재할 수도 있습니다. 이는 클래스별 혹은 인스턴스별 어드바이스에 해당합니다.클래스별 어드바이스는 일반적으로 사용됩니다. 이는 프록시 객체의 상태에 의존하지 않거나 새로운 상태를 추가하지 않는 트랜잭션 어드바이저와 같은 일반적인 어드바이스에 적합합니다. 이러한 어드바이스는 메서드와 아규먼트에 대해 작동합니다.인스턴스별 어드바이스는 믹스인을 지원하기 위해 사용됩니다. 이 경우 어드바이스는 프록시 객체에 상태를 추가합니다.동일한 AOP 프록시에서 공유 어드바이스와 인스..
2024.11.17 -
Choosing which AOP Declaration Style to Use
특정 요구 사항을 구현하기 위해 애스펙트가 최선의 접근 방식이라고 결정했다면, Spring AOP와 AspectJ 중 무엇을 사용할지, 그리고 Aspect 언어(코드) 스타일, @AspectJ 애너테이션 스타일, Spring XML 스타일 중 어떤 것을 사용할지 결정해야 합니다. 이러한 결정은 애플리케이션 요구 사항, 개발 도구, 팀의 AOP에 대한 친숙도 등 여러 요인에 영향을 받습니다.Spring AOP 또는 Full AspectJ?가장 간단하게 작동할 수 있는 것을 사용하세요. Spring AOP는 Full AspectJ를 사용하는 것보다 간단합니다. 개발 및 빌드 프로세스에 AspectJ 컴파일러/위버를 도입할 필요가 없기 때문입니다. Spring 빈의 작업 실행에만 조언(advice)을 적용해야..
2024.11.17 -
Proxying Mechanisms
Proxying MechanismsSpring AOP는 지정된 타겟 객체에 대해 JDK 동적 프록시 또는 CGLIB을 사용하여 프록시를 생성합니다. JDK 동적 프록시는 JDK에 내장되어 있는 반면, CGLIB은 일반적인 오픈 소스 클래스 정의 라이브러리로, Spring Core에 재패키징되어 있습니다.프록시 대상 객체가 하나 이상의 인터페이스를 구현하는 경우 JDK 동적 프록시가 사용됩니다. 이때 타겟 타입이 구현하는 모든 인터페이스가 프록시됩니다. 반면, 타겟 객체가 인터페이스를 구현하지 않는 경우 CGLIB 프록시가 생성됩니다.모든 메서드(인터페이스에서 구현한 메서드뿐만 아니라 타겟 객체에 정의된 모든 메서드)를 프록시하려면 CGLIB 프록시를 강제로 사용하도록 설정할 수 있습니다. 그러나 다음과 ..
2024.11.17