Tech Stack/Spring Boot

[Spring] 03. IoC란?

[Spring] 03. IoC란?이전 글에서는 Spring Framework가 무엇인지 살펴봤습니다. Spring은 Java 애플리케이션을 더 체계적으로 만들기 위한 프레임워크이고, 객체 관리와 계층 분리를 도와줍니다.이번 글에서는 Spring의 핵심 개념 중 하나인 IoC에 대해 정리해보겠습니다. IoC는 처음 보면 어려운 단어처럼 느껴지지만, 핵심은 단순합니다.IoC는 객체를 개발자가 직접 만들고 관리하는 것이 아니라, Spring이 대신 관리하도록 맡기는 개념입니다.1. IoC란?IoC는 Inversion of Control의 줄임말입니다. 한국어로는 제어의 역전이라고 부릅니다.여기서 제어란 객체를 생성하고, 필요한 곳에 연결하고, 사용하는 흐름을 말합니다. 일반적인 Java 코드에서는 개발자가 직..

[Spring] 02. Spring Framework란?

[Spring] 02. Spring Framework란?이전 글에서는 Spring이 왜 필요한지 살펴봤습니다. Servlet과 JSP만으로도 웹 애플리케이션을 만들 수 있지만, 기능이 많아질수록 코드가 복잡해지고 유지보수가 어려워집니다. Spring은 이런 문제를 줄이고, 더 안정적인 Java 웹 애플리케이션을 만들기 위해 사용합니다.이번 글에서는 Spring Framework가 무엇인지, 그리고 Spring Boot와는 어떤 차이가 있는지 정리해보겠습니다.1. Framework란?Spring을 이해하려면 먼저 Framework라는 단어부터 알아야 합니다. Framework는 개발자가 애플리케이션을 만들 때 사용할 수 있는 기본 구조와 규칙을 제공하는 도구입니다.쉽게 말하면, Framework는 개발자가..

[Spring] 01. Spring이 필요한 이유

[Spring] 01. Spring이 필요한 이유웹 개발을 처음 배울 때는 Java, Servlet, JSP만으로도 게시판을 만들 수 있습니다. 회원가입을 만들고, 로그인을 처리하고, 게시글을 등록하고, 목록을 조회하는 것도 가능합니다. 하지만 기능이 조금씩 늘어나기 시작하면 코드가 금방 복잡해집니다.처음에는 단순해 보였던 게시판도 회원, 게시글, 댓글, 파일 업로드, 권한 체크, 검색, 페이징이 붙으면 관리하기 어려워집니다. Controller 안에는 요청 처리 코드가 길어지고, Service와 DAO의 역할이 섞이며, 같은 코드가 여러 곳에 반복되기도 합니다.Spring이 필요한 이유Spring은 이런 복잡한 웹 애플리케이션을 더 안정적으로 만들기 위해 사용합니다. 단순히 코드를 줄이기 위한 도구가 ..

[Spring MVC] DispatcherServlet(디스패처 서블릿)이란 무엇인가?

[Spring MVC] DispatcherServlet(디스패처 서블릿)이란 무엇인가? Spring MVC 프레임워크를 공부하다 보면 가장 먼저 마주치는 개념이 바로 DispatcherServlet(디스패처 서블릿)입니다. 간단히 말해, 모든 HTTP 요청을 가장 먼저 받아 적절한 컨트롤러로 배달해주는 '중앙 창구' 역할을 합니다. 1. 디스패처 서블릿의 정의 Dispatcher는 "보내다(파견하다)"라는 뜻을 가지고 있습니다. Servlet 컨테이너의 가장 앞단에서 요청을 받아 관리하는 패턴을 Front Controller 패턴이라고 부르는데, 스프링에서는 이를 DispatcherServlet이 담당합니다. 핵심 특징: 과거에는 모든 서블..

[Spring] JWT 05. RefreshToken DB 저장 + 1회성 폐기(로테이션) + 재발급 흐름 완성

[Spring] JWT 05. RefreshToken DB 저장 + 1회성 폐기(로테이션) + 재발급 흐름 완성AccessToken은 짧게, RefreshToken은 길게 사용합니다.하지만 RefreshToken을 그냥 클라이언트에만 두면 탈취 위험이 있습니다.그래서 실무에서는 RefreshToken을 DB에 저장하고 1회성으로 폐기(로테이션)하는 방식을 많이 사용합니다.1. 왜 RefreshToken을 DB에 저장해야 할까? 탈취된 RefreshToken 무효화 가능 중복 로그인 제어 가능 (1인 1토큰) 로그아웃 시 강제 만료 가능즉, AccessToken은 Stateless,RefreshToken은 Stateful하게 관리하는 전략입니다.2. DB 테이블 설계 예시CREATE TABLE mem..

[Spring] JWT 04. 만료 임박 자동 갱신(TokenRenewalInterceptor) 적용

[Spring] JWT 04. 만료 임박 자동 갱신(TokenRenewalInterceptor) 적용 (응답 헤더로 새 토큰 내려주기)JWT를 운영하다 보면 AccessToken 만료 때문에 사용자 경험이 끊기는 문제가 생깁니다.이를 줄이기 위해 만료 임박(예: 10분 이하)이면 서버가 자동으로 새 AccessToken을 발급해서응답 헤더로 내려주는 방식을 사용할 수 있습니다.1. 자동 갱신 방식이란?요청이 들어오면 서버가 AccessToken의 남은 시간을 확인하고,만료가 임박하면 새 AccessToken을 만들어서 응답 헤더에 같이 담아줍니다. 클라이언트가 AccessToken으로 API 요청 서버가 토큰 남은 시간(remain)을 계산 남은 시간이 기준(renewal-limit)보다 작으면 새..

[Spring] JWT 03. Interceptor로 인증 적용하기 (로그인 필요 API 보호)

[Spring] JWT 03. Interceptor로 인증 적용하기 (로그인 필요 API 보호)JWT를 발급했다면 이제 “로그인 필요한 API”를 보호해야 합니다.Spring에서는 보통 Security Filter를 많이 쓰지만, 프로젝트 구조에 따라 Interceptor로도 충분히 구현할 수 있습니다.이번 글은 Interceptor 기반 JWT 인증 흐름을 정리합니다.1. Interceptor로 JWT 인증을 하는 이유 컨트롤러 실행 전에 요청을 가로채서 검사할 수 있음 특정 URL 패턴만 “로그인 필요”로 지정 가능 JWT 파싱 후 loginId / 권한을 request에 담아 컨트롤러에서 사용 가능핵심 목표는 딱 2가지입니다. Authorization 헤더에 토큰이 없거나 잘못되면 → 401..

[Spring] JWT 02. AccessToken / RefreshToken 구조 + 재발급 흐름

[Spring] JWT 02. AccessToken / RefreshToken 구조 + 재발급 흐름 JWT를 실제 서비스에서 쓰려면 보통 토큰을 2개로 나눕니다.AccessToken은 짧게, RefreshToken은 길게 가져가서 보안을 올리는 방식입니다.1. 왜 토큰을 2개로 나눌까?AccessToken 하나만 오래 쓰면 보안이 약해집니다. (탈취되면 오래 위험)그래서 AccessToken은 짧게(예: 10~30분), 만료되면 RefreshToken으로 재발급 받습니다. 구분 AccessToken RefreshToken 역할 API 요청 인증 AccessToken 재발급 만료 짧음 (1..