Java/Spring
-
리스너(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, Thymeleaf, dialect layout Spring Boot 에서 Thymeleaf 를 사용하여 axios 라이브러리를 script 태그를 통해 import 시키려다가파일을 찾질 못해서 작성하게 됐다. ✅ 1. 기본 동작: /static/** → /로 매핑됨 Spring Boot 는 아래 디렉토리들을 기본적으로 정적 리소스 루트로 인식한다.src/main/resources/staticsrc/main/resources/publicsrc/main/resources/resourcessrc/main/resources/META-INF/resources예를 들어 아래 위치에 JS 파일이 있다고 가정하면src/main/resources/static/js/app..
Spring Boot 정적 리소스 설정환경 : Spring Boot3, Java17, Thymeleaf, dialect layout Spring Boot 에서 Thymeleaf 를 사용하여 axios 라이브러리를 script 태그를 통해 import 시키려다가파일을 찾질 못해서 작성하게 됐다. ✅ 1. 기본 동작: /static/** → /로 매핑됨 Spring Boot 는 아래 디렉토리들을 기본적으로 정적 리소스 루트로 인식한다.src/main/resources/staticsrc/main/resources/publicsrc/main/resources/resourcessrc/main/resources/META-INF/resources예를 들어 아래 위치에 JS 파일이 있다고 가정하면src/main/resources/static/js/app..
2025.06.27 -
Spring Security 의 CSRF 설정을 하면서 태그를 사용했는데메타데이터가 어떤건지 문득 궁금해져 작성한다. 메타데이터(Metadata) 란?데이터에 대한 데이터를 의미한다.쉽게 말하면 메타데이터는 어떤 데이터가 "무엇인지", "어떻게 사용되어야 하는지"에 대한 정보를 담고 있는 데이터이다. ✅ 예시로 이해하는 메타데이터 1. 📄 파일의 메타데이터파일 이름 : report.pdf크기 : 2MB생성일자 : 2025-06-24파일 형식 : PDF이 정보들이 바로 파일의 메타데이터이다.파일 자체가 본 데이터고 그에 대한 설명이 메타데이터이다. 2. 📷 사진의 메타데이터 (EXIF)사진 찍은 날짜카메라 모델GPS 위치 정보사진이라는 데이터를 설명해주는 메타데이터이다. 3. 🌐 웹에서의 메타데이..
메타데이터(Metadata)Spring Security 의 CSRF 설정을 하면서 태그를 사용했는데메타데이터가 어떤건지 문득 궁금해져 작성한다. 메타데이터(Metadata) 란?데이터에 대한 데이터를 의미한다.쉽게 말하면 메타데이터는 어떤 데이터가 "무엇인지", "어떻게 사용되어야 하는지"에 대한 정보를 담고 있는 데이터이다. ✅ 예시로 이해하는 메타데이터 1. 📄 파일의 메타데이터파일 이름 : report.pdf크기 : 2MB생성일자 : 2025-06-24파일 형식 : PDF이 정보들이 바로 파일의 메타데이터이다.파일 자체가 본 데이터고 그에 대한 설명이 메타데이터이다. 2. 📷 사진의 메타데이터 (EXIF)사진 찍은 날짜카메라 모델GPS 위치 정보사진이라는 데이터를 설명해주는 메타데이터이다. 3. 🌐 웹에서의 메타데이..
2025.06.24 -
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 -
Spring Boot 3 에서 Spring Security 6 를 사용하여 로그인 시 동시 세션 제어를 설정하려고 한다. Spring Security 의 SecurityFilterChain 에서 Session 을 관리하는 Filter 는SessionManagementFilter 와 ConcurrentSessionFilter 이다. SessionManagementFilter인증 직후에 세션을 생성하거나 재사용하고, 세션 관련 정책을 적용한다. 세션을 관리하는 Filter 인 SessionManagementFilter 는 4가지 기능을 한다.세션 관리 : 인증 후 사용자의 세션 관리(등록, 조회, 삭제)동시 세션 제어 : 동일 계정에 대한 세션 관리세션 고정 보호 : 인증 후 세션 쿠키를 재발급하여 세션 ..
Spring Security 동시 세션 제어(SessionManagementFilter, ConcurrentSessionFilter)Spring Boot 3 에서 Spring Security 6 를 사용하여 로그인 시 동시 세션 제어를 설정하려고 한다. Spring Security 의 SecurityFilterChain 에서 Session 을 관리하는 Filter 는SessionManagementFilter 와 ConcurrentSessionFilter 이다. SessionManagementFilter인증 직후에 세션을 생성하거나 재사용하고, 세션 관련 정책을 적용한다. 세션을 관리하는 Filter 인 SessionManagementFilter 는 4가지 기능을 한다.세션 관리 : 인증 후 사용자의 세션 관리(등록, 조회, 삭제)동시 세션 제어 : 동일 계정에 대한 세션 관리세션 고정 보호 : 인증 후 세션 쿠키를 재발급하여 세션 ..
2025.06.16 -
Spring Security 6버전을 설정하면서 문득 FilterChain 의 순서가 궁금하여 찾아보다가 아래 방법으로 목록을 확인했다. @Autowiredprivate List securityFilterChains;@PostConstructpublic void printFilters() { securityFilterChains.forEach(chain -> { chain.getFilters().forEach(filter -> { System.out.println("FILTER === "+filter.getClass().getSimpleName()); }); });} SecurityFilterChain 목록을 가진 리스트를 @Autowired 를 통..
Spring Security FilterChain 목록 조회(@PostConstruct)Spring Security 6버전을 설정하면서 문득 FilterChain 의 순서가 궁금하여 찾아보다가 아래 방법으로 목록을 확인했다. @Autowiredprivate List securityFilterChains;@PostConstructpublic void printFilters() { securityFilterChains.forEach(chain -> { chain.getFilters().forEach(filter -> { System.out.println("FILTER === "+filter.getClass().getSimpleName()); }); });} SecurityFilterChain 목록을 가진 리스트를 @Autowired 를 통..
2025.06.16