https://sundaland.tistory.com/88
[ ▶ Spring instrument library ]
spring-instrument는 스프링 프레임워크에서 제공하는 라이브러리 중 하나로, 주로 자바 애플리케이션에서 AOP를 지원하거나 특정 기능을 추가하기 위해 사용된다. 특히 spring-instrument는 JVM 레벨에서 클래스 로딩을 조작하거나, 프록시 객체를 생성하는 등의 기능을 수행할 수 있도록 도와준다.
[ ▷ Load Time Weaving (LTW) ]
- 클래스가 JVM에 로드될 때 바이트코드를 변환하는 방식으로 AOP 기능을 적용하는 기법이다. 스프링 AOP에서 런타임에 프록시 객체를 생성하지 않고, 클래스가 로드될 때 바이트코드를 변환하는 방식으로 AOP 기능을 적용할 수 있다. 이를 위해 spring-instrument 라이브러리가 필요하다. 이는 주로 성능을 향상시키기 위해 사용된다.
[ ▷ JPA 및 Hibernate ]
- spring-instrument 라이브러리는 자바 에이전트로서 동작할 수 있으며, JVM이 시작될 때 -javaagent 옵션을 사용하여 Spring Instrument을 로드할 수 있다.
- 예를 들어, JVM 시작 시 다음과 같이 Spring Instrument를 자바 에이전트로 등록할 수 있다.
[ ▷ 자바 에이전트로서의 역할 ]
- Spring Instrument는 자바 에이전트로서 동작할 수 있으며, JVM이 시작될 때 -javaagent 옵션을 사용하여 Spring Instrument를 로드할 수 있다.
- 예를 들어 JVM 시작 시 아래와 같이 Spring Instrument를 자바 에이전트로 등록할 수 있다.
java -javaagent:/path/to/spring-instrument.jar -jar myapp.jar
- 이 옵션을 사용하면, Spring Instrument가 JVM의 Instrumentation API를 통해 클래스 로딩 시점에서 바이트코드를 조작할 수 있게 된다.
[ ▷ 사용방법 ]
spring-instrument를 사용하려면, 프로젝트의 pom.xml (Maven인 경우)이나 build.gradle(Gradle인 경우) 파일에 해당 라이브러리를 추가해야 한다.
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-instrument</artifactId>
<version>${spring.version}</version>
</dependency>
이후 특정 환경에서 이를 활성화하거나 자바 에이전트로 설정하여 사용하게 된다.
[ ▷ 정리 ]
Spring Instrument 라이브러리는 자바 에이전트로서의 역할을 수행할 수 있으며, 특히 Spring Instrument는 특히 AOP와 관련된 기능을 활성화하기 위해서 스프링 애플리케이션에서 로드 타임 위빙을 활성화하거나 JPA/Hibernate 통합을 지원하기 위해 사용된다. 또한 JPA와 같은 ORM 툴에서의 지연로딩, 런타임 클래스 수정 등에서 사용된다. Spring Instrument를 자바 에이전트로 사용하는 경우, JVM 시작 시 -javaagnet 옵션을 사용하여 이를 등록하면, 런타임에 클래스 로딩 과정에 개입하여 필요한 바이트코드 변환을 수행할 수 있다.
'스프링 AOP' 카테고리의 다른 글
Programmatic Creation of @AspectJ Proxies, Using AspectJ with Spring Applications (0) | 2024.09.04 |
---|---|
Instrumentation API vs AspectJ (0) | 2024.09.04 |
Java Agent (1) | 2024.09.04 |
Java Instrument API vs ASM(Abstract Syntax Manipulation) (0) | 2024.09.03 |
Java Instrumentation API (0) | 2024.09.03 |