Spring Framework(182)
-
multipart/form-data
📦 multipart/form-dataHTML Form을 통해 파일 업로드나 복잡한 사용자 입력을 서버로 전송할 때, 가장 중요한 전송 방식 중 하나가 바로 multipart/form-data입니다. 이 방식은 단순한 키-값 쌍 전송을 넘어서 파일 바이너리 데이터, 체크박스 상태, 복수 필드 값 등을 하나의 HTTP 요청으로 통합하여 전송할 수 있도록 설계되었습니다.이 글에서는 multipart/form-data의 구조, 동작 원리, HTTP 스펙 수준의 헤더 분석, 그리고 실제 전송 패킷 예제를 통해 이 방식을 완전하게 이해할 수 있도록 안내합니다. 1️⃣ multipart/form-data란?multipart/form-data는 MIME 타입 중 하나로서, 하나의 HTTP 메시지 본문을 여러 개의 ..
2025.07.15 -
Spring Web MVC
Section SummaryDispatcherServletFiltersAnnotated ControllersFunctional EndpointsURI LinksAsynchronous RequestsCORSError ResponsesWeb SecurityHTTP CachingView TechnologiesMVC ConfigHTTP/2 출처 : https://docs.spring.io/spring-framework/reference/web/webmvc.html
2025.06.29 -
DefaultAdvisorAutoProxyCreator
DefaultAdvisorAutoProxyCreator는 Spring AOP의 핵심 자동 프록시 생성기 중 하나로, 등록된 Advisor 빈을 기반으로 자동으로 프록시를 생성하는 고급 자동 프록시 생성기입니다.이를 통해 트랜잭션, 보안, 로깅 등 다양한 AOP 기능을 관심사 분리 원칙에 따라 적용할 수 있도록 설계되어 있습니다. 📌 핵심 요약: DefaultAdvisorAutoProxyCreator란?Advisor(즉, Pointcut + Advice 조합)를 기반으로포인트컷에 매칭되는 빈들에 대해 자동으로 프록시를 생성해주는 BeanPostProcessor입니다.트랜잭션 AOP (@Transactional)보안 AOP (@Secured)커스텀 AOP (MethodInterceptor 사용)위와 같은 ..
2025.06.16 -
BeanNameAutoProxyCreator
BeanNameAutoProxyCreator는 Spring Framework의 AOP(Aspect-Oriented Programming)에서 제공하는 자동 프록시 생성기(Auto Proxy Creator) 중 하나로, 이름에서 알 수 있듯이 "빈 이름"에 기반하여 프록시를 생성합니다.이 클래스는 AbstractAutoProxyCreator → AbstractBeanNameAutoProxyCreator → BeanNameAutoProxyCreator의 구조를 따릅니다. 🧠 개요: BeanNameAutoProxyCreator란?BeanNameAutoProxyCreator는 빈 이름과 일치하는 대상에 대해 자동으로 프록시를 생성하고, 지정된 **인터셉터(advice)**들을 적용해줍니다.@Beanpublic..
2025.06.16 -
CGLIB + Objenesis를 사용하는 Spring
생성자 우회1. 전통적인 객체 생성 흐름 vs Objenesis 흐름단계전통적 new + 생성자Objenesis① 클래스 메타데이터 확보동일동일② 생성자 실행✔ 필수❌ 생략③ 필드에 디폴트값 할당JVM 자동JVM 자동④ 프록시/모킹·프레임워크가 필드 주입이후 가능이후 가능포인트 : Objenesis는 ② 단계를 건너뜀으로써 “생성된 직후의 객체가 실제로 super() 호출을 거치지 않은 빈 껍데기 상태임을 보장합니다. 2. 생성자 우회가 주는 6가지 핵심 장점2-1. 부작용(side effect) 두 번 실행 방지프록시 클래스는 타겟 클래스를 상속합니다.이때 생성자를 그대로 실행하면 타겟 쪽 로직(예: DB 커넥션, 파일 I/O, 원격 호출)이 프록시를 만들 때에도 또 실행될 수 있습니다.Objenesi..
2025.06.15 -
Objenesis
Objenesis는 Java 객체를 생성자 호출 없이 인스턴스화할 수 있도록 해주는 라이브러리입니다. 일반적인 Java 코드에서는 new 키워드나 리플렉션(Constructor.newInstance())을 통해 객체를 생성할 때 생성자가 반드시 호출되지만, Objenesis는 이 과정을 우회해서 생성자를 호출하지 않고 객체를 만들 수 있게 해줍니다. 🔧 왜 Objenesis가 필요한가요?Java에서 객체를 생성할 때는 보통 생성자가 호출됩니다. 하지만 때로는 생성자를 호출하지 않고 객체를 생성해야 하는 경우가 있습니다:프록시/직렬화/역직렬화 프레임워크: 객체를 생성하되, 생성자에 부작용이 있는 경우 이를 피하고 싶을 때(예: java.io.Serializable에서 역직렬화는 생성자를 호출하지 않음)객..
2025.06.11