Spring Framework(182)
-
Spring instrument library
spring-instrument는 Spring Framework에서 제공하는 라이브러리 중 하나로, 주로 Java 애플리케이션에서 AOP(Aspect-Oriented Programming)를 지원하거나 특정 기능을 추가하기 위해 사용됩니다. 특히, spring-instrument는 JVM(Java Virtual Machine) 레벨에서 클래스 로딩을 조작하거나, 프록시 객체를 생성하는 등의 기능을 수행할 수 있도록 도와줍니다.주요 사용 사례는 다음과 같습니다:Load Time Weaving (LTW):클래스가 JVM에 로드될 때 바이트코드를 변환하는 방식으로 AOP 기능을 적용하는 기법입니다. Spring AOP에서 런타임에 프록시 객체를 생성하지 않고, 클래스가 로드될 때 바이트코드를 변환하는 방식으로..
2023.05.22 -
@AspectJ support
@AspectJ @AspectJ는 자바의 애노테이션을 활용하여, 일반적인 자바 클래스를 통해 Aspect를 정의하는 스타일을 의미합니다.@Aspectpublic class LoggingAspect { @Before("execution(* com.example.service.*.*(..))") public void logBeforeMethod() { System.out.println("Method is about to be called."); }} @AspectJ 스타일은 AspectJ 5 릴리스의 일환으로 AspectJ 프로젝트에서 도입되었습니다. Spring은 포인트컷을 해석하고 매칭[match:연결]하기 위해 AspectJ에서 제공하는 라이브러리를 사용하여 동일한 애노테이..
2023.05.22 -
Filter
Spring Web 모듈 필터 개요Spring Web 모듈은 서블릿 기반 애플리케이션에서 웹 요청을 처리하는 데 유용한 여러 필터를 제공합니다. 이 필터들은 Form 데이터 처리, 전달된 헤더 관리, 얕은 ETag 캐싱, CORS(교차 출처 리소스 공유) 처리를 위한 기능을 제공합니다. 각 필터의 역할에 대해 자세히 살펴보겠습니다.Form Data 필터디폴트로 브라우저에서는 HTTP GET 또는 POST 메서드를 통해서만 폼 데이터를 전송할 수 있습니다. 하지만 Non-브라우저 클라이언트(예: REST 클라이언트)는 다른 HTTP 메서드인 PUT, PATCH, 또는 DELETE를 사용하여 폼 데이터를 전송할 수 있습니다. Servlet API는 POST 요청에 대해서만 ServletRequest.getP..
2023.05.19 -
DelegatingIntroductionInterceptor의 delegate 객체 생성
DelegatingIntroductionInterceptor에서 delegate를 임의의 객체로 설정하는 방법은 간단합니다. 생성자에서 delegate를 인자로 받아서 설정하면 됩니다. 이렇게 설정된 delegate는 도입된 인터페이스의 메서드 호출을 처리하게 됩니다.아래는 delegate를 임의의 객체로 설정하는 예제 코드입니다.예제 코드먼저, 도입할 인터페이스와 해당 인터페이스의 실제 구현체를 정의합니다.// 도입할 인터페이스public interface Lockable { void lock(); void unlock(); boolean locked(); }// Lockable 인터페이스를 구현한 클래스 (Delegate로 사용할 객체)public class CustomL..
2023.05.19 -
Java Agent
Java Agent는 Java 애플리케이션의 실행 중 동작을 변경하거나 모니터링할 수 있는 특별한 프로그램입니다. Java Agent는 JVM(Java Virtual Machine)과 상호 작용하여 클래스 로딩 시점에 바이트코드를 조작하거나, 이미 로드된 클래스의 동작을 런타임에 수정할 수 있습니다. 이러한 기능은 성능 모니터링, 디버깅, 프로파일링, 코드 커버리지 분석, 그리고 AOP(Aspect-Oriented Programming) 구현 등 다양한 목적에 사용됩니다.Java Agent의 주요 특징premain 메서드:Java Agent는 JVM이 시작될 때 premain 메서드를 통해 실행됩니다. 이 메서드는 JVM이 메인 애플리케이션을 실행하기 전에 호출됩니다.premain 메서드는 두 가지 형태..
2023.05.17 -
AOP Concepts, Spring AOP Capabilities and Goals, AOP Proxies
AOP Concepts먼저, 중심이 되는 AOP 개념과 용어를 정의해보겠습니다. 이 용어들은 Spring에만 국한된 것이 아닙니다. 불행히도, AOP 용어는 직관적이지 않은 경우가 많습니다. 하지만 Spring이 자체 용어를 사용하는 것보다는 이 용어들을 사용하는 것이 덜 혼란스러울 것입니다.Aspect: Aspect(관점)은 여러 클래스에 걸쳐 있는 공통 관심사를 모듈화하는 방법으로, 트랜잭션 관리, 로깅, 보안 등이 대표적인 예입니다. Spring AOP에서 aspect는 일반 클래스(스키마 기반 접근 방식)를 사용하거나 @Aspect 애노테이션이 있는 일반 클래스를 사용하여 구현됩니다(@AspectJ 스타일).Join point: 프로그램 실행 중의 한 시점으로, 메서드 실행이나 예외 처리와 같은 ..
2023.05.16