Spring Framework(182)
-
Introductions
IntroductionsIntroductions(AspectJ에서는 inter-type declarations라고도 함)는 특정 aspect가 advised된 객체가 주어진 인터페이스를 구현하도록 선언하고, 그 객체들을 대신하여 해당 인터페이스의 구현을 제공할 수 있게 합니다.@DeclareParents 애노테이션을 사용하여 Introduction을 만들 수 있습니다. 이 애노테이션은 매칭되는 타입에 새로운 부모(즉, 새로운 인터페이스 구현)를 가지도록 선언하는 데 사용됩니다. 예를 들어, UsageTracked라는 인터페이스와 이 인터페이스를 구현한 DefaultUsageTracked라는 클래스가 있다고 가정해 보겠습니다. 다음의 aspect는 모든 서비스 인터페이스 구현체들이 UsageTracked ..
2024.11.17 -
Declaring a Pointcut
포인트컷(Pointcut)은 어드바이스를 적용할 지점(조인 포인트)을 지정하는 역할을 합니다. Spring AOP는 Spring 빈에 대한 메서드 실행 조인 포인트만 지원하므로, 포인트컷은 Spring 빈의 메서드 실행을 매칭하는 것으로 생각할 수 있습니다. 포인트컷 선언은 이름과 파라미터를 포함하는 포인트컷 시그니처(signature)와 특정 조건과 일치하는 메서드 실행을 정확히 결정하는 포인트컷 표현식으로 구성됩니다. @AspectJ 애노테이션 스타일의 AOP에서는 포인트컷 시그니처가 일반 메서드 정의에 의해 제공되며, 포인트컷 표현식은 @Pointcut 애노테이션을 사용하여 표시됩니다(포인트컷 시그니처 역할을 하는 메서드는 void 리턴 타입이어야 합니다).다음 예시는 포인트컷 시그니처와 포인트컷 ..
2024.11.17 -
Declaring an Aspect
@AspectJ 지원이 활성화된 상태에서, 애플리케이션 컨텍스트에 정의된 빈 중, 클래스에 @Aspect 애노테이션이 있는 @AspectJ aspect은 Spring에 의해 자동으로 감지되며 Spring AOP를 구성하는 데 사용됩니다. 다음 두 가지 예시는 크게 유용하지 않은 aspect를 정의하는 데 필요한 최소 단계를 보여줍니다.첫 번째 예시에서는 애플리케이션 컨텍스트에 있는 일반적인 빈 정의가 @Aspect 애노테이션이 있는 빈 클래스를 가리키는 방법을 보여줍니다: 두 번째 예시에서는 @Aspect 애노테이션이 달린 NotVeryUsefulAspect 클래스 정의를 보여줍니다:package com.xyz;import org.aspectj.lang.annotation.Aspect;@Aspec..
2024.11.17 -
Enabling @AspectJ Support
@AspectJ 방식의 Aspect를 Spring 구성에서 사용하려면, Spring이 @AspectJ Aspect를 기반으로 AOP를 구성하고, 어드바이스 메서드에 정의된 포인트컷 조건에 따라, Bean의 메서드가 AOP 적용 대상인지 판단하여 , 자동으로 프록시를 생성하는 기능을 활성화해야 합니다. 여기서 자동 프록시 생성(auto-proxying)이란, Spring이 어떤 빈의 메서드가 어드바이스 메서드에 정의된 포인트컷에 매칭된다고 판단하면, 해당 빈에 대해 자동으로 프록시를 생성하여 메서드 호출을 가로채고, 필요한 시점에 어드바이스가 실행되도록 보장하는 것을 말합니다.@AspectJ 지원은 XML 또는 Java 기반 구성으로 활성화할 수 있습니다. 두 경우 모두 애플리케이션의 클래스패스에 Aspe..
2024.11.17 -
Spring instrument
Spring Instrument란?Spring Instrument는 Spring 프레임워크에서 제공하는 Java Instrumentation API 기반의 Java Agent로, Spring 애플리케이션에서 클래스를 동적으로 조작할 수 있도록 도와주는 모듈이다.Spring Instrument는 Spring AOP 및 Load Time Weaving(LTW)과 함께 사용되며, 특정 기능(예: AspectJ)에서 런타임에 클래스를 수정하거나 프록시를 생성하는 기능을 제공한다.1. Spring Instrument의 주요 역할Spring Instrument 모듈은 Spring 애플리케이션의 동적 바이트코드 조작을 지원하는 역할을 한다.📌 주요 역할Spring AOP 및 Load Time Weaving(LTW)..
2024.11.17 -
Programmatic Creation of @AspectJ Proxies
또는 를 사용하여 구성에서 aspect를 선언하는 것 외에도, 타겟 객체를 어드바이스하는 프록시를 프로그래밍 방식으로 생성할 수도 있습니다. Spring AOP API에 대한 전체 자세한 내용은 다음 장을 참조하세요. 여기서는 @AspectJ aspect를 사용하여 자동으로 프록시를 생성하는 기능에 중점을 두고 설명하겠습니다.org.springframework.aop.aspectj.annotation.AspectJProxyFactory 클래스를 사용하여 하나 이상의 @AspectJ aspect에 의해 어드바이스된 타겟 객체에 대한 프록시를 생성할 수 있습니다. 이 클래스의 기본 사용법은 매우 간단하며, 다음 예제가 이를 보여줍니다:// 주어진 타겟 객체에 대한 프록시를 생성할 수 있는 팩토리를 생성합니다..
2024.11.15