Spring
-
Spring 에서의 세션(Session) 은 기본적으로 서블릿 컨테이너(예: Tomcat, Jetty 등) 에 의해 관리된다. 🔍 기본 세션 관리 구조 항목내용세션 저장소기본적으로 서블릿 컨테이너가 HttpSession 객체를 사용해 관리저장 위치서버 메모리 (in-memory), 필요 시 Redis 등 외부 저장소로 대체 가능Spring 역할Spring 은 HttpSession 에 접근하거나, 추가 기능을 제공하는 수준(예: 세션 리스너 등록, 커스텀 세션 전략 등) ✅ 기본 흐름 클라이언트가 요청을 보냄(JSESSIONID쿠키 포함 OR 없음)서블릿 컨테이너(Tomcat 등)가 HttpSession 생성 또는 식별Spring 은 내부적으로 HttpServletRequest.getSession(..
Spring 에서 Session 관리 주체Spring 에서의 세션(Session) 은 기본적으로 서블릿 컨테이너(예: Tomcat, Jetty 등) 에 의해 관리된다. 🔍 기본 세션 관리 구조 항목내용세션 저장소기본적으로 서블릿 컨테이너가 HttpSession 객체를 사용해 관리저장 위치서버 메모리 (in-memory), 필요 시 Redis 등 외부 저장소로 대체 가능Spring 역할Spring 은 HttpSession 에 접근하거나, 추가 기능을 제공하는 수준(예: 세션 리스너 등록, 커스텀 세션 전략 등) ✅ 기본 흐름 클라이언트가 요청을 보냄(JSESSIONID쿠키 포함 OR 없음)서블릿 컨테이너(Tomcat 등)가 HttpSession 생성 또는 식별Spring 은 내부적으로 HttpServletRequest.getSession(..
2025.08.05 -
DelegatingFilterProxy 란?서블릿 필터 클래스이다.서블릿 컨테이너(Tomcat)에 필터로 등록되지만 내부적으로는 Spring Bean 이름으로 실제 Filter를 찾아서위임(delegate) 한다. 즉, 서블릿 필터처럼 동작하지만 진짜 필터 로직은 Spring Context 내에 있는 Bean 이 처리한다. ⚙️ 동작 구조 요약 [서블릿 컨테이너의 Filter Chain] ↓DelegatingFilterProxy (서블릿 필터, Spring이 자동 등록) ↓ (Bean 이름 기반으로 찾아서 위임)springSecurityFilterChain (Spring Security의 실제 필터 체인 Bean) ↓ecurity Filter들 (UsernamePassword..
DelegatingFilterProxyRegistrationBean<T extends Filter>DelegatingFilterProxy 란?서블릿 필터 클래스이다.서블릿 컨테이너(Tomcat)에 필터로 등록되지만 내부적으로는 Spring Bean 이름으로 실제 Filter를 찾아서위임(delegate) 한다. 즉, 서블릿 필터처럼 동작하지만 진짜 필터 로직은 Spring Context 내에 있는 Bean 이 처리한다. ⚙️ 동작 구조 요약 [서블릿 컨테이너의 Filter Chain] ↓DelegatingFilterProxy (서블릿 필터, Spring이 자동 등록) ↓ (Bean 이름 기반으로 찾아서 위임)springSecurityFilterChain (Spring Security의 실제 필터 체인 Bean) ↓ecurity Filter들 (UsernamePassword..
2025.08.04 -
Spring 컨테이너의 Bean 과 서블릿 컨테이너 수준의 컴포넌트 차이는등록 주체, 라이프사이클, DI 사용 가능성, 관리 방식 등에서 뚜렷한 차이가 있다. 핵심 차이 요약 항목Spring Bean서블릿 컨테이너 컴포넌트(@WebServlet, @WebFilter, @WebListener)관리 주체Spring 컨테이너(ApplicationContext)Servlet 컨테이너(Tomcat, Jetty 등)등록 방법@Component, @Controller, @Service, @Repository, @Configuration+@Bean@WebServlet, @WebFilter, @WebListenerDI 가능 여부가능 (@Autowired, 생성자 주입)기본적으로 불가능(Spring 관리 대상이 아님)..
Spring 컨테이너의 Bean 과 서블릿 컨테이너 수준의 컴포넌트 차이Spring 컨테이너의 Bean 과 서블릿 컨테이너 수준의 컴포넌트 차이는등록 주체, 라이프사이클, DI 사용 가능성, 관리 방식 등에서 뚜렷한 차이가 있다. 핵심 차이 요약 항목Spring Bean서블릿 컨테이너 컴포넌트(@WebServlet, @WebFilter, @WebListener)관리 주체Spring 컨테이너(ApplicationContext)Servlet 컨테이너(Tomcat, Jetty 등)등록 방법@Component, @Controller, @Service, @Repository, @Configuration+@Bean@WebServlet, @WebFilter, @WebListenerDI 가능 여부가능 (@Autowired, 생성자 주입)기본적으로 불가능(Spring 관리 대상이 아님)..
2025.07.23 -
@ServletComponentScan 이란?@WebServlet, @WebFilter, @WebListener 같은 Servlet 3.0+ 에서 제공하는 어노테이션 기반의서블릿 컴포넌트들을 자동으로 스캔하고 등록해주는 역할을 한다. 기본 개념Spring Boot는 기본적으로 Servlet 컴포넌트를 @Bean 으로 등록하거나 FilterRegistrationBean,ServletRegistrationBean 등을 사용해서 등록하길 권장한다. 하지만, 기존의 서블릿 스펙에 맞게 @WebServlet, @WebFilter 등으로 작성된 클래스를 사용할 경우이 클래스들을 자동으로 등록되려면 @ServletComponentScan 어노테이션이 필요하다. 주요 대상 어노테이션@ServletComponentS..
@ServletComponentScan 이란?@ServletComponentScan 이란?@WebServlet, @WebFilter, @WebListener 같은 Servlet 3.0+ 에서 제공하는 어노테이션 기반의서블릿 컴포넌트들을 자동으로 스캔하고 등록해주는 역할을 한다. 기본 개념Spring Boot는 기본적으로 Servlet 컴포넌트를 @Bean 으로 등록하거나 FilterRegistrationBean,ServletRegistrationBean 등을 사용해서 등록하길 권장한다. 하지만, 기존의 서블릿 스펙에 맞게 @WebServlet, @WebFilter 등으로 작성된 클래스를 사용할 경우이 클래스들을 자동으로 등록되려면 @ServletComponentScan 어노테이션이 필요하다. 주요 대상 어노테이션@ServletComponentS..
2025.07.23 -
RequestContextHolder 클래스란?Spring MVC 에서 현재 HTTP 요청(request) 과 관련된 컨텍스트 정보를 Thead Local 방식으로 관리해주는유틸리티 클래스이다.즉, 현재 처리중인 요청의 HttpServletRequest 나 HttpSession 에 접근할 수 있게 도와주는 도구입니다. 📌 주요 목적Spring 에서는 HTTP 요청이 하나의 스레드에서 처리되므로, RequestContextHolder 를 통해 전역 어디에서든요청 정보에 접근할 수 있습니다. 🔍 currentRequestAttributes() 메서드RequestAttributes attrs = RequestContextHolder.currentRequestAttributes(); 현재 스레드에 바인딩된 ..
RequestContextHolderRequestContextHolder 클래스란?Spring MVC 에서 현재 HTTP 요청(request) 과 관련된 컨텍스트 정보를 Thead Local 방식으로 관리해주는유틸리티 클래스이다.즉, 현재 처리중인 요청의 HttpServletRequest 나 HttpSession 에 접근할 수 있게 도와주는 도구입니다. 📌 주요 목적Spring 에서는 HTTP 요청이 하나의 스레드에서 처리되므로, RequestContextHolder 를 통해 전역 어디에서든요청 정보에 접근할 수 있습니다. 🔍 currentRequestAttributes() 메서드RequestAttributes attrs = RequestContextHolder.currentRequestAttributes(); 현재 스레드에 바인딩된 ..
2025.07.21 -
리스너(Linstener)란?웹 어플리케이션에서 특정 이벤트(세션 생성, 파괴, 요청 시작, 종료 등)를 감지하고 그에 대한 처리를 하기 위한컴포넌트이다. 즉, Spring Boot 또는 Servlet 기반 웹 어플리케이션에서는 리스너(Linstener) 를 사용해서 다음과 같은웹 라이프사이클 이벤트를 감지할 수 있다. 🔍 리스너 종류리스너 인터페이스설명HttpSessionListener세션 생성 / 삭제 감지HttpSessionAttributeListener세션 속성 추가/변경/삭제 감지SevletContextLisnter웹 어플리케이션 시작/종료 감지ServletRequestListener요청(Request) 시작/종료 감지 🧩 HttpSessionEventPublisher 란?HttpSes..
Spring Boot 서블릿 기반의 리스너(Servlet Listener) 와 HttpSessionEventPublisher리스너(Linstener)란?웹 어플리케이션에서 특정 이벤트(세션 생성, 파괴, 요청 시작, 종료 등)를 감지하고 그에 대한 처리를 하기 위한컴포넌트이다. 즉, Spring Boot 또는 Servlet 기반 웹 어플리케이션에서는 리스너(Linstener) 를 사용해서 다음과 같은웹 라이프사이클 이벤트를 감지할 수 있다. 🔍 리스너 종류리스너 인터페이스설명HttpSessionListener세션 생성 / 삭제 감지HttpSessionAttributeListener세션 속성 추가/변경/삭제 감지SevletContextLisnter웹 어플리케이션 시작/종료 감지ServletRequestListener요청(Request) 시작/종료 감지 🧩 HttpSessionEventPublisher 란?HttpSes..
2025.07.21