Java
-
HttpSessionEventPublisherSpring Security 에서 사용하는 클래스인데, 서블릿 컨테이너에서 발생하는 HttpSession 이벤트를Spring Security 쪽 이벤트로 변환해서 전달해주는 다리 역할을 한다. 즉, 톰캣 같은 WAS 가세션 생성 / 삭제 / ID 변경을 알리면, 그걸 Spring 어플리케이션 컨텍스트가 들을 수 있는 이벤트로 변환하여전달한다. 즉, 쉽게 말하면Tomcat 세션 이벤트 ↓HttpSessionEventPublisher ↓Spring Security 이벤트 왜 필요한가Spring Security 세션 관련 기능, 특히 동시 세션 제어나 세션 만료 감지는 컨테이너의 HttpSessionListener 이벤트만으로는부족하다. HttpSession..
HttpSessionEventPublisherHttpSessionEventPublisherSpring Security 에서 사용하는 클래스인데, 서블릿 컨테이너에서 발생하는 HttpSession 이벤트를Spring Security 쪽 이벤트로 변환해서 전달해주는 다리 역할을 한다. 즉, 톰캣 같은 WAS 가세션 생성 / 삭제 / ID 변경을 알리면, 그걸 Spring 어플리케이션 컨텍스트가 들을 수 있는 이벤트로 변환하여전달한다. 즉, 쉽게 말하면Tomcat 세션 이벤트 ↓HttpSessionEventPublisher ↓Spring Security 이벤트 왜 필요한가Spring Security 세션 관련 기능, 특히 동시 세션 제어나 세션 만료 감지는 컨테이너의 HttpSessionListener 이벤트만으로는부족하다. HttpSession..
2026.05.19 -
ApplicationListener 란?Spring Security 에서 세션(Session) 이 종료되거나 만료될 때 발생하는 이벤트를 감지하는 리스너이다. 보통 아래 상황에서 실행된다. 세션 타임아웃 만료로그아웃세션 강제 제거Cocurrent Session Control 로 인한 세션 종료 SessionDestroyedEventSessionDestroyedEvent 는 단순히 브라우저 탭을 닫는 순간이 아니라, Spring Security 가 관리하는 세션이만료되거나 무효화될 때 발생하는 이벤트입니다. 이 이벤트 안에는 보통 해당 세션에 연결된 SecurityContext 목록이들어있어서, 어떤 사용자의 세션이 끝났는지 확인할 수 있습니다. 보통 같이 필요한 것(HttpSessionEventPubli..
ApplicationListener<SessionDestroyedEvent>ApplicationListener 란?Spring Security 에서 세션(Session) 이 종료되거나 만료될 때 발생하는 이벤트를 감지하는 리스너이다. 보통 아래 상황에서 실행된다. 세션 타임아웃 만료로그아웃세션 강제 제거Cocurrent Session Control 로 인한 세션 종료 SessionDestroyedEventSessionDestroyedEvent 는 단순히 브라우저 탭을 닫는 순간이 아니라, Spring Security 가 관리하는 세션이만료되거나 무효화될 때 발생하는 이벤트입니다. 이 이벤트 안에는 보통 해당 세션에 연결된 SecurityContext 목록이들어있어서, 어떤 사용자의 세션이 끝났는지 확인할 수 있습니다. 보통 같이 필요한 것(HttpSessionEventPubli..
2026.05.19 -
Spring MVC 기본 동작을 갈아엎지 않고 필요한 부분만 커스터마이징하는 인터페이스이다✅ 1. 어디에 쓰는가?Spring Boot 는 기본적으로 내부에서 MVC 설정을 자동으로 해준다WebMvcConfigurer 인터페이스를 구현하면 DispatcherServlet 과 관련된 MVC 설정(인터셉터, CORS, 리소스 핸들링, 뷰 설정 등) 을 Java 기반으로 커스텀할 수 있다여기서 기본 설정은 그대로 두고 필요한 부분만 커스터마이징하기 때문에 전체 설정을 다시 만드는것보다 간편하다@Configurationpublic class WebConfig implements WebMvcConfigurer {}이렇게 설정하게 되면 Spring MVC 설정에 끼어들 수 있다 1️⃣ 정적 리소스 매핑@Overrid..
Spring WebMvcConfigurerSpring MVC 기본 동작을 갈아엎지 않고 필요한 부분만 커스터마이징하는 인터페이스이다✅ 1. 어디에 쓰는가?Spring Boot 는 기본적으로 내부에서 MVC 설정을 자동으로 해준다WebMvcConfigurer 인터페이스를 구현하면 DispatcherServlet 과 관련된 MVC 설정(인터셉터, CORS, 리소스 핸들링, 뷰 설정 등) 을 Java 기반으로 커스텀할 수 있다여기서 기본 설정은 그대로 두고 필요한 부분만 커스터마이징하기 때문에 전체 설정을 다시 만드는것보다 간편하다@Configurationpublic class WebConfig implements WebMvcConfigurer {}이렇게 설정하게 되면 Spring MVC 설정에 끼어들 수 있다 1️⃣ 정적 리소스 매핑@Overrid..
2026.04.23 -
Spring Boot 에서 특정 파일을 /static 리소스 경로에 생성하고 그 파일을 브라우저의 Audio 기능을 통해 음성파일을실행했어야 했는데 파일을 생성한 후 실행하려고 보니까 에러가 났다. 에러의 원인은 파일 리소스를 어플리케이션에서 reload 를 해주기 직전에는 리소스를 인식하지 못하는 이유였다. 해당 원인을 해결하기 위해 특정 파일 경로를 설정하고 특정 요청으로 왔을 때 파일이 있는 실제경로를 매핑하여 실행하면 해결된다. WebMvcConfigurer 설정@Slf4j@Configuration@Profile("!test")public class WebMvcConfig implements WebMvcConfigurer { @Value("${urgent.preview.upload.use}") ..
Spring Boot WebMvcConfigurer addResourceHandlers 설정Spring Boot 에서 특정 파일을 /static 리소스 경로에 생성하고 그 파일을 브라우저의 Audio 기능을 통해 음성파일을실행했어야 했는데 파일을 생성한 후 실행하려고 보니까 에러가 났다. 에러의 원인은 파일 리소스를 어플리케이션에서 reload 를 해주기 직전에는 리소스를 인식하지 못하는 이유였다. 해당 원인을 해결하기 위해 특정 파일 경로를 설정하고 특정 요청으로 왔을 때 파일이 있는 실제경로를 매핑하여 실행하면 해결된다. WebMvcConfigurer 설정@Slf4j@Configuration@Profile("!test")public class WebMvcConfig implements WebMvcConfigurer { @Value("${urgent.preview.upload.use}") ..
2026.04.23 -
1️⃣ OAuth 2.0이란 무엇인가?OAuth 2.0은 권한 위임(Authorization) 프로토콜이다.즉, 🔐 사용자의 비밀번호를 공유하지 않고 🎫 Access Token 을 이용해 📡 다른 서버의 리소스(API) 에 접근하도록하는 표준이다. OAuth 2.0이 해결하는 문제예를 들어 어떤 사이트에서 이런 버튼을 본적 있을것이다. Google 로그인Kakao 로그인GitHub 로그인 이때 사용자는 아이디/비밀번호를 그 서비스에 직접 입력하지 않고외부 인증 서버가 대신 인증을 해준다. 즉 구조는 이렇게 된다.사용자 → 내 서비스 → Google 로그인 → Google 인증 → 내 서비스 내 서비스는 사용자의 비밀번호를 몰라도Google 이 인증한 사용자라는 것만 확인하면 된다. 👉 이것이 ..
Spring Security OAuth2.01️⃣ OAuth 2.0이란 무엇인가?OAuth 2.0은 권한 위임(Authorization) 프로토콜이다.즉, 🔐 사용자의 비밀번호를 공유하지 않고 🎫 Access Token 을 이용해 📡 다른 서버의 리소스(API) 에 접근하도록하는 표준이다. OAuth 2.0이 해결하는 문제예를 들어 어떤 사이트에서 이런 버튼을 본적 있을것이다. Google 로그인Kakao 로그인GitHub 로그인 이때 사용자는 아이디/비밀번호를 그 서비스에 직접 입력하지 않고외부 인증 서버가 대신 인증을 해준다. 즉 구조는 이렇게 된다.사용자 → 내 서비스 → Google 로그인 → Google 인증 → 내 서비스 내 서비스는 사용자의 비밀번호를 몰라도Google 이 인증한 사용자라는 것만 확인하면 된다. 👉 이것이 ..
2026.03.03 -
HandlerMethodArgumentResolver 란?컨트롤러 메서드의 파라미터를 직접 해석해서 객체로 만들어주는 확장 포인트 인터페이스다쉽게 말해, Spring MVC 에서 컨트롤러 메서드의 매개변수를 HTTP 요청에서 실제 인자 값으로변환하는 인터페이스이다. DispatcherServlet 이 HandlerMapping 에서 적절한 Mapping URL 을 찾아내고 HanlderAdapter 를 통해적절한 컨트롤러 메서드를 호출한다.여기서 컨트롤러 메서드를 호출하기 전 @RequestParam, @PathVariable, @RequestBody 등의 데이터들을가공하거나 커스터마이징할 때 사용한다. 1️⃣ 왜 필요한가? (사용 이유) @GetMapping("/users")public String ..
HandlerMethodArgumentResolver 란?HandlerMethodArgumentResolver 란?컨트롤러 메서드의 파라미터를 직접 해석해서 객체로 만들어주는 확장 포인트 인터페이스다쉽게 말해, Spring MVC 에서 컨트롤러 메서드의 매개변수를 HTTP 요청에서 실제 인자 값으로변환하는 인터페이스이다. DispatcherServlet 이 HandlerMapping 에서 적절한 Mapping URL 을 찾아내고 HanlderAdapter 를 통해적절한 컨트롤러 메서드를 호출한다.여기서 컨트롤러 메서드를 호출하기 전 @RequestParam, @PathVariable, @RequestBody 등의 데이터들을가공하거나 커스터마이징할 때 사용한다. 1️⃣ 왜 필요한가? (사용 이유) @GetMapping("/users")public String ..
2026.01.07