스프링 AOP

·스프링 AOP
https://sundaland.tistory.com/99 [ ▶ Programmatic Creation of @AspectJ Proxies ] 또는 를 사용하여 설정에서 aspect를 선언하는 것 외에도, 타겟 객체를 어드바이스하는 프록시를 프로그래밍 방식으로 생성할 수도 있다.@AspectJ aspect를 사용하여 자동으로 프록시를 생성할 수 잇다.org.springframework.aop.aspectj.annotation.AspectJProxyFactory 클래스를 사용하여 하나 의상의 @AspectJ aspect에 의해 어드바이스된 타겟 객체에 대한 프록시를 생성할 수 있다.// 주어진 타겟 객체에 대한 프록시를 생성할 수 있는 팩토리를 생성합니다.AspectJProxyFactory factory..
·스프링 AOP
https://sundaland.tistory.com/88 [ ▶ Spring instrument library ]spring-instrument는 스프링 프레임워크에서 제공하는 라이브러리 중 하나로, 주로 자바 애플리케이션에서 AOP를 지원하거나 특정 기능을 추가하기 위해 사용된다. 특히 spring-instrument는 JVM 레벨에서 클래스 로딩을 조작하거나, 프록시 객체를 생성하는 등의 기능을 수행할 수 있도록 도와준다. [ ▷ Load Time Weaving (LTW) ]클래스가 JVM에 로드될 때 바이트코드를 변환하는 방식으로 AOP 기능을 적용하는 기법이다. 스프링 AOP에서 런타임에 프록시 객체를 생성하지 않고, 클래스가 로드될 때 바이트코드를 변환하는 방식으로 AOP 기능을 적용할 수 있..
·스프링 AOP
https://sundaland.tistory.com/65 [ ▶ Instrumentation API vs AspectJ ] Instrumentation API와 AspectJ는 서로 독립적인 기술이지만, AspectJ가 AOP 기능을 제공하는데 있어 Instrumentation API를 활용할 수 있는 상황이 존재한다. 그러나  Instrumentation API는 AOP 기능을 위해서 반드시 AspectJ와 협력해야 하는 것이 아니다. 이 둘은 각각 다른 목적과 기능을 가지고 있으며, 특정 상황에서 협력할 수 있다는 것이 더 정확한 설명이다. [ ▷ 독립적인 역할 ] Instrumentation API 주된 역할: 클래스 파일을 로드하거나 이미 로드된 클래스의 바이트코드를 런타임에 변경하는 것, AO..
·스프링 AOP
https://sundaland.tistory.com/78 [ ▶ Java Agent ]자바 에이전트는 자바 애플리케이션의 실행 중 동작을 변경하거나 모니터링할 수 있는 특별한 프로그램이다. 자바 에이전트는 JVM (자바 가상 머신)과 상호 작용하여 클래스 로딩 시점에 바이트코드를 조작하거나, 이미 로드된 클래스의 동작을런타임에 수정할 수 있다. 이러한 기능은 성능 모니터링, 디버깅, 프로파일링, 코드 커버리지 분석, 그리고 AOP (Aspect-Oriented Programming) 구현 등 다양한 목적에 사용된다. [ ▷ 자바 에이전트의 주요 특징 ]1. Permain 메서드자바 에이전트는 JVM이 시작될 때 premain 메서드를 통해 실행된다. 이 메서드는 JVM이 메인 애플리케이션을 실행하기 전..
·스프링 AOP
https://sundaland.tistory.com/154 [ ▶ Java Instrument API vs ASM ]Java Instrumentation API와 ASM은 모두 자바 바이트코드 조작을 가능하게 하는 도구이지만, 그 목적과 사용방식이 다르다. 이 둘은 서로 보완적으로 사용될 수 있으며, Instrumentation API는 ASM과 같은 라이브러리와 함께 사용되어 바이트코드를 런타임에 조작할 수 있다.[ ▷ Java Instrumentation API ]주요 목적Instrumentation API는 자바 애플리케이션에서 런타임 시 클래스의 바이트코드를 조작할 수 있는 기능을 제공한다. 주로 자바 에이전트를 통해 사용되며, JVM에서 클래스가 로드되기 전이나 이미 로드된 후에 바이트코드를 ..
·스프링 AOP
https://sundaland.tistory.com/75 [ ▶ Instrumentation API ]Instrumentation API는 자바 플랫폼의 java.lang.instrument 패키지에서 제공되는 API로, JVM의 클래스 로딩 및 런타임 동작을 조작할 수 있도록하는 API이며, 이 API 자체는 인터페이스로 제공된다. 이 API는 주로 성능 모니터링, 프로파일링, 코드 커버리지 도구, 그리고 AOP (Aspect-Oriented Programming) 같은 기술을 구현할 때 사용한다. 구현체는 JVM 내부에서 이 API를 구현하고, 이를 통해 자바 에이전트와 같은 도구들이 해당 기능을 사용할 수 있도록 한다. [ ▷ 주요기능 ]1. ClassFileTransformerClassFileT..
·스프링 AOP
https://sundaland.tistory.com/89[ ▶ Declaring Advice ]어드바이스는 포인트컷 표현식과 연관되어 있으며, 포인트컷에 의해 매칭된 메서드 실행 전, 후 또는 실행 중에 실행된다. 포인트컷 표현식인 인라인 포인트 컷이거나 named pointcut을 참조할 수 있다. [ ▷ Before Advice ]@Before 어노테이션을 사용하여 어드바이스를 선언할 수 있다. ▼ 인라인 포인트컷 표현식을 사용한 예제import org.aspectj.lang.annotation.Aspect;import org.aspectj.lang.annotation.Before;@Aspectpublic class BeforeExample { @Before("execution(* com.xy..
·스프링 AOP
https://sundaland.tistory.com/87[ ▶ @AspectJ ] @AspectJ는 어노테이션을 사용하여 일반적인 자바 클래스로 어드바이스를 선언하는 스타일을 의미한다.  @AspectJ 스타일은 AspectJ 5 릴리스의 일환으로 AspectJ 프로젝트에서 도입되었다. 스프링은 포인트컷을 해석하고 매칭 (연결)하기 위해 AspectJ에서 제공하는 라이브러리를 사용하여 동일한 어노테이션을 AspectJ 5처럼 해석한다. 그러나 AOP 런타임은 여전히 순수한 스프링 AOP로 동작하여, AspectJ 컴파일러나 위버 (weaver)에 대한 의존성은 없다. AspectJ 컴파일러와 위버를 사용하면 전체 AspectJ 언어를 사용할 수 있다. @ AspectJ라는 어노테이션은 스프링이나 Asp..
GLaDiDos
'스프링 AOP' 카테고리의 글 목록