Spring
-
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 -
의존성 주입을 할때 대표적인게 @Autowired 어노테이션을 사용하거나 클래스의 생성자 주입을 사용한다. ✅ @Autowired vs 생성자 주입 – 차이점 요약항목@Autowired 주입생성자 주입주입 방식필드나 메서드에 @Autowired 설정생성자를 통해 주입불변성객체 필드가 final 이 될 수 없음final 키워드로 인해 불변 보장 가능테스트 용이성Mock 주입 어려움(리플렉션 필요)테스트 시 생성자 인자만 넘기면 됨Null SafetyNPE 발생 가능성이 존재객체 생성 시 반드시 주입되므로 안전순환 참조감지 어려움컴파일 단계에서 일부 감지 가능권장 여부(Spring 공식)과거에 많이 사용Spring 팀에서 권장하는 방식 ✅ 왜 생성자 주입이 "귀찮게" 느껴질까? 생성자 주입을 해놓은 ..
Spring @Autowired 주입과 생성자 주입 차이 그리고 파라미터 주입의존성 주입을 할때 대표적인게 @Autowired 어노테이션을 사용하거나 클래스의 생성자 주입을 사용한다. ✅ @Autowired vs 생성자 주입 – 차이점 요약항목@Autowired 주입생성자 주입주입 방식필드나 메서드에 @Autowired 설정생성자를 통해 주입불변성객체 필드가 final 이 될 수 없음final 키워드로 인해 불변 보장 가능테스트 용이성Mock 주입 어려움(리플렉션 필요)테스트 시 생성자 인자만 넘기면 됨Null SafetyNPE 발생 가능성이 존재객체 생성 시 반드시 주입되므로 안전순환 참조감지 어려움컴파일 단계에서 일부 감지 가능권장 여부(Spring 공식)과거에 많이 사용Spring 팀에서 권장하는 방식 ✅ 왜 생성자 주입이 "귀찮게" 느껴질까? 생성자 주입을 해놓은 ..
2025.06.11 -
Spring Bean 을 등록하는 이유는 여러가지가 있다. 📌 장점 항목설명의존성 주입(DI)스프링이 객체를 관리해주므로 생성자 주입 등 다른 의존 객체도 자동 주입 가능싱글톤 유지기본적으로 Spring Bean 은 싱글톤으로 관리해 매번 새로 생성되지 않고 재사용AOP 사용 가능@Transactional, @Async 등 AOP 기능 사용 가능생명주기 관리@PostConstruct, @PreDestroy 등을 통해 초기화 및 종료 로직을 관리 가능유지보수 용이스프링 컨테이너가 관리하므로 설정, 테스트, 확장 등에 유리함 ✅ 1. @Component 기본적인 Bean 등록 어노테이션Spring 이 클래스파일 경로를 스캔할 때(@ComponentScan) Bean 등록을 위한 어노테이션들이 붙은 클..
Spring Bean 등록을 위한 어노테이션(@Component, @Controller, @Service, @Repository, @Configuration+@Bean)Spring Bean 을 등록하는 이유는 여러가지가 있다. 📌 장점 항목설명의존성 주입(DI)스프링이 객체를 관리해주므로 생성자 주입 등 다른 의존 객체도 자동 주입 가능싱글톤 유지기본적으로 Spring Bean 은 싱글톤으로 관리해 매번 새로 생성되지 않고 재사용AOP 사용 가능@Transactional, @Async 등 AOP 기능 사용 가능생명주기 관리@PostConstruct, @PreDestroy 등을 통해 초기화 및 종료 로직을 관리 가능유지보수 용이스프링 컨테이너가 관리하므로 설정, 테스트, 확장 등에 유리함 ✅ 1. @Component 기본적인 Bean 등록 어노테이션Spring 이 클래스파일 경로를 스캔할 때(@ComponentScan) Bean 등록을 위한 어노테이션들이 붙은 클..
2025.06.11