Spring boot
-
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 -
ServletListenerRegistrationBean 이란?Spring Boot 에서 서블릿 스펙의 Listener(예: HttpSessionListener, ServletContextListener) 를 서블릿 컨테이너에등록하기 위한 Spring Bean 이다. 즉, 서블릿 컨테이너가 감지할 수 있도록 Spring Bean 을 리스너로 등록해주는 중간 다리 역할을 한다. 🔄 동작 흐름 요약 HttpSessionListener 같은 서블릿 리스너를 구현하거나 이미 구현된 클래스(HttpSessionEventPublisher) 를 사용한다.ServletListenerRegistrationBean 으로 위 클래스를 Spring Bean 으로 등록한다.Spring Boot 는 내장 톰캣(또는 서블릿 컨..
ServletListenerRegistrationBean<T extends EventListener>ServletListenerRegistrationBean 이란?Spring Boot 에서 서블릿 스펙의 Listener(예: HttpSessionListener, ServletContextListener) 를 서블릿 컨테이너에등록하기 위한 Spring Bean 이다. 즉, 서블릿 컨테이너가 감지할 수 있도록 Spring Bean 을 리스너로 등록해주는 중간 다리 역할을 한다. 🔄 동작 흐름 요약 HttpSessionListener 같은 서블릿 리스너를 구현하거나 이미 구현된 클래스(HttpSessionEventPublisher) 를 사용한다.ServletListenerRegistrationBean 으로 위 클래스를 Spring Bean 으로 등록한다.Spring Boot 는 내장 톰캣(또는 서블릿 컨..
2025.07.28 -
리스너(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 -
Spring Boot3, Java17 기준이다. 🔁 전체 흐름 정리 Spring Boot 어플리케이션이 시작될 때 내부적으로 아래와 같은 과정이 진행된다. 1. @ComponentScan 동작Spring Boot 어플리케이션을 실행했을 때 Spring Boot 메인함수에 있는 @SpringBootApplication 어노테이션에있는 @ComponentScan 이 지정된 패키지를 탐색하면서 @Component, @Controller, @Service, @Repository 등을가진 클래스를 찾는다. 2. Bean 등록 (객체 생성 + 의존성 주입)@ComponentScan 에 의해 찾은 클래스들을 스프링 컨테이너에 Bean 등록한다.이때 의존성이 필요하면 생성자를 통해 주입하게 된다. (생성자 주입의 ..
Spring Boot 의 생성자 주입 시점과 순환참조Spring Boot3, Java17 기준이다. 🔁 전체 흐름 정리 Spring Boot 어플리케이션이 시작될 때 내부적으로 아래와 같은 과정이 진행된다. 1. @ComponentScan 동작Spring Boot 어플리케이션을 실행했을 때 Spring Boot 메인함수에 있는 @SpringBootApplication 어노테이션에있는 @ComponentScan 이 지정된 패키지를 탐색하면서 @Component, @Controller, @Service, @Repository 등을가진 클래스를 찾는다. 2. Bean 등록 (객체 생성 + 의존성 주입)@ComponentScan 에 의해 찾은 클래스들을 스프링 컨테이너에 Bean 등록한다.이때 의존성이 필요하면 생성자를 통해 주입하게 된다. (생성자 주입의 ..
2025.06.19 -
AOP(Aspect-Oriented Programming)핵심 비즈니스 로직과 공통 관심 사항(로깅, 보안, 트랜잭션, 예외 처리 등)을 분리하기 위한 프로그래밍 패러다임이다. AOP는 관심사를 모듈화해서 코드 중복을 줄이고 유지보수를 쉽게 만들기 위한 개념이다.예를 들어, 모든 서비스 로직에 로깅을 넣는다고 할 때 각 메서드마다 System.out.println() 을 직접 쓰는건비효율적이다. AOP를 쓰면 한 곳에서 정의하고 자동으로 설정한 모든 메서드에 적용할 수 있다. 🔧 어디에 사용하는가? 상황설명🔍 로깅(logging)메서드 실행 전/후 시간, 파라미터, 결과값 등을 기록할 때🔒 보안(Security)특정 메서드는 인증된 사용자만 접근 가능하게 할 때💾 트랜잭션 처리메서드 단위로 트..
AOP(Aspect-Oriented Programming)AOP(Aspect-Oriented Programming)핵심 비즈니스 로직과 공통 관심 사항(로깅, 보안, 트랜잭션, 예외 처리 등)을 분리하기 위한 프로그래밍 패러다임이다. AOP는 관심사를 모듈화해서 코드 중복을 줄이고 유지보수를 쉽게 만들기 위한 개념이다.예를 들어, 모든 서비스 로직에 로깅을 넣는다고 할 때 각 메서드마다 System.out.println() 을 직접 쓰는건비효율적이다. AOP를 쓰면 한 곳에서 정의하고 자동으로 설정한 모든 메서드에 적용할 수 있다. 🔧 어디에 사용하는가? 상황설명🔍 로깅(logging)메서드 실행 전/후 시간, 파라미터, 결과값 등을 기록할 때🔒 보안(Security)특정 메서드는 인증된 사용자만 접근 가능하게 할 때💾 트랜잭션 처리메서드 단위로 트..
2025.05.30 -
Spring boot 기준으로 톰캣에 어플리케이션를 올렸다고 생각해보자 ✅ 메인 쓰레드의 역할Java 어플리케이션의 메인 쓰레드(Main Thread)는 프로젝트 내 프로젝트 명 + Application.java 파일을 보면public static void main(String[] args) 메서드가 존재하는데 어플리케이션의 최초 실행 흐름을 담당하는단 하나의 초기 진입점이다. Spring Boot 어플리케이션을 실행하면 main() 메서드에서 시작된다.@SpringBootApplicationpublic class MyApplication { public static void main(String[] args) { SpringApplication.run(MyApplication.cla..
Spring에서의 Thread 와 Thread PoolSpring boot 기준으로 톰캣에 어플리케이션를 올렸다고 생각해보자 ✅ 메인 쓰레드의 역할Java 어플리케이션의 메인 쓰레드(Main Thread)는 프로젝트 내 프로젝트 명 + Application.java 파일을 보면public static void main(String[] args) 메서드가 존재하는데 어플리케이션의 최초 실행 흐름을 담당하는단 하나의 초기 진입점이다. Spring Boot 어플리케이션을 실행하면 main() 메서드에서 시작된다.@SpringBootApplicationpublic class MyApplication { public static void main(String[] args) { SpringApplication.run(MyApplication.cla..
2025.05.21