Spring Framework(110)
-
Filter
Spring Web 모듈 필터 개요Spring Web 모듈은 서블릿 기반 애플리케이션에서 웹 요청을 처리하는 데 유용한 여러 필터를 제공합니다. 이 필터들은 폼 데이터 처리, 전달된 헤더 관리, 얕은 ETag 캐싱, CORS(교차 출처 리소스 공유) 처리를 위한 기능을 제공합니다. 각 필터의 역할에 대해 자세히 살펴보겠습니다.Form Data 필터기본적으로 브라우저에서는 HTTP GET 또는 POST 메서드를 통해서만 폼 데이터를 전송할 수 있습니다. 하지만 비-브라우저 클라이언트(예: REST 클라이언트)는 다른 HTTP 메서드인 PUT, PATCH, 또는 DELETE를 사용하여 폼 데이터를 전송할 수 있습니다. Servlet API는 POST 요청에 대해서만 ServletRequest.getParam..
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 -
1. Aspect Oriented Programming with Spring
[공식문서]AOP(Aspect-Oriented Programming)는 프로그램 구조를 생각하는 또 다른 방법을 제공하여 OOP(Object-Oriented Programming)를 보완합니다. OOP에서의 주요 모듈화 단위는 클래스인 반면, AOP에서는 모듈화 단위가 aspect입니다. aspect는 트랜잭션 관리와 같은 여러 타입과 객체에 걸쳐 있는 문제를 모듈화할 수 있게 해줍니다. 이러한 문제는 AOP 문헌에서 흔히 crosscutting concerns라고 불립니다.Spring의 주요 구성 요소 중 하나는 AOP 프레임워크입니다. Spring IoC 컨테이너는 AOP에 의존하지 않으므로(AOP를 사용하지 않아도 된다는 의미) AOP를 꼭 사용해야 하는 것은 아니지만, AOP는 Spring IoC..
2023.05.16 -
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