Spring Framework/Spring AOP(18)
-
Spring AOP APIs 2[The Advisor API in Spring, Using the ProxyFactoryBean to Create AOP Proxies]
The Advisor API in SpringSpring에서 Advisor는 포인트컷 표현식과 연관된 단일 어드바이스 객체만을 포함하는 애스펙트입니다.도입(introductions)의 특별한 경우를 제외하고, 모든 어드바이저는 모든 어드바이스와 함께 사용할 수 있습니다. `org.springframework.aop.support.DefaultPointcutAdvisor`는 가장 일반적으로 사용되는 어드바이저 클래스입니다. 이 클래스는 `MethodInterceptor`, `BeforeAdvice`, 또는 `ThrowsAdvice`와 함께 사용할 수 있습니다.Spring에서는 동일한 AOP 프록시에서 어드바이저와 어드바이스 타입을 혼합할 수 있습니다. 예를 들어, 하나의 프록시 구성에서 인터셉션 aroun..
2023.05.16 -
Java Instrumentation API
Instrumentation API는 Java 플랫폼의 java.lang.instrument 패키지에서 제공되는 API로, JVM의 클래스 로딩 및 런타임 동작을 조작할 수 있도록 하는 API이며, 이 API 자체는 인터페이스로 제공됩니다. 이 API는 주로 성능 모니터링, 프로파일링, 코드 커버리지 도구, 그리고 AOP(Aspect-Oriented Programming) 같은 기술을 구현할 때 사용됩니다. 구현체는 JVM 내부에서 이 API를 구현하고, 이를 통해 Java Agent와 같은 도구들이 해당 기능을 사용할 수 있도록 합니다.주요 기능ClassFileTransformer:ClassFileTransformer는 클래스가 로드되기 전에 바이트코드를 변환할 수 있는 인터페이스입니다. 이를 통해 클..
2023.05.16 -
AOP Alliance (Java/J2EE AOP standards)
AOP AllianceAOP Alliance aopalliance.sourceforge.netaopalliance 1.0 javadoc (aopalliance) Introduction이 문서의 목적은 AOP Alliance 프로젝트를 소개하는 것입니다. 그 목표, 철학, 제공해야 할 답변, 그리고 제공하지 말아야 할 것들에 대해 다루고자 합니다. 이 문서는 AOP Alliance의 다른 구성원들과 논의를 통해 우리가 여기서 무엇을 하고 있는지에 대한 공통된 견해를 도출하기 위해 추가 논의가 필요한 초안 제안서입니다. 또한, 목록에서 논의 중에 흥미로운 점이 나오면 이 문서에 추가되어야 합니다.이 문서는 백서(white paper)로, AOP Alliance 구성원들이 내부적으로 사용할 수 있을 뿐만 아니..
2023.05.10 -
Spring AOP APIs 1[Pointcut API in Spring, Advice API in Spring]
https://docs.spring.io/spring-framework/reference/core/aop-api.htmlPointcut API in Spring이 섹션에서는 Spring이 중요한 포인트컷 개념을 어떻게 처리하는지 설명합니다.Concepts스프링의 포인트컷 모델은 advice 유형과 독립적으로 포인트컷을 재사용할 수 있게 해줍니다. 동일한 포인트컷으로 다양한 어드바이스를 타겟팅할 수 있습니다.org.springframework.aop.Pointcut 인터페이스는 특정 클래스와 메서드를 타겟으로 어드바이스를 지정하기 위해 사용하는 핵심 인터페이스입니다. 전체 인터페이스는 다음과 같습니다:public interface Pointcut { ClassFilter getClassFilter()..
2023.05.03 -
Spring AOP APIs 3[Concise Proxy Definitions, Creating AOP Proxies Programmatically with the ProxyFactory, Manipulating Advised Objects, Using the "auto-proxy" facility]
Concise Proxy Definitions특히 트랜잭션 프록시를 정의할 때, 유사한 프록시 정의가 많이 생길 수 있습니다. 부모-자식 빈 정의와 내부 빈 정의를 사용하면 훨씬 깔끔하고 간결한 프록시 정의를 만들 수 있습니다.먼저, 다음과 같이 프록시를 위한 부모(템플릿) 빈 정의를 생성합니다:XML 기반 구성: PROPAGATION_REQUIRED 자바 기반 구성:@Configurationpublic class AppConfig { @Bean public TransactionProxyFactoryBean txProxyTemplate(TransactionManager transactionManager) { Tra..
2023.05.03 -
Instrumentation API vs AspectJ
Instrumentation API와 AspectJ는 서로 독립적인 기술이지만, AspectJ가 AOP(Aspect-Oriented Programming) 기능을 제공하는 데 있어 Instrumentation API를 활용할 수 있는 상황이 존재합니다. 그러나 Instrumentation API는 AOP 기능을 위해 반드시 AspectJ와 협력해야 하는 것은 아닙니다. 이 둘은 각각 다른 목적과 기능을 가지고 있으며, 특정 상황에서 협력할 수 있다는 것이 더 정확한 설명입니다.독립적인 역할Instrumentation API:주된 역할: 클래스 파일을 로드하거나 이미 로드된 클래스의 바이트코드를 런타임에 변경하는 것. AOP는 Instrumentation API의 핵심 기능이 아니며, 이 API는 성능 모..
2023.05.03