Spring
-
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 -
Spring Boot, Thymeleaf 환경에서 URL 자체를 넘겨 HTML 의 img src 속성에 설정했다.접근한 URL 과 불러오는 이미지 URL 자체의 도메인이 달랐기 때문에 CORS 문제가 터졌다.안드로이드 폰에서는 이미지 자체를 잘 불러왔으나 아이폰에서는 안나와서 찾아보니iOS 의 브라우저는 CORS 정책이 엄격하다고 한다. 그래서 여러가지 방법을 찾아보다가 가장 안정적이고 쉬운 방법은 backgroud-image css 설정을사용해 화면에 보여주는걸로 해결했다. 처음에 시도했던 방법은 CSS background-image 사용 예시 VS span[background-image] 차이점 정리 항목 span + background-image 브라우저 CORS 검사엄격 (iOS에서 차단)..
img 태그 src 속성 아이폰 브라우저 CORS 문제 해결Spring Boot, Thymeleaf 환경에서 URL 자체를 넘겨 HTML 의 img src 속성에 설정했다.접근한 URL 과 불러오는 이미지 URL 자체의 도메인이 달랐기 때문에 CORS 문제가 터졌다.안드로이드 폰에서는 이미지 자체를 잘 불러왔으나 아이폰에서는 안나와서 찾아보니iOS 의 브라우저는 CORS 정책이 엄격하다고 한다. 그래서 여러가지 방법을 찾아보다가 가장 안정적이고 쉬운 방법은 backgroud-image css 설정을사용해 화면에 보여주는걸로 해결했다. 처음에 시도했던 방법은 CSS background-image 사용 예시 VS span[background-image] 차이점 정리 항목 span + background-image 브라우저 CORS 검사엄격 (iOS에서 차단)..
2026.03.09 -
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 -
1️⃣ 람다식이란?JDK 1.8 부터 추가된 람다식(Lambda Expression)은 메서드를 하나의 식(Expression)으로 표현한것이다.람다식은 함수를 간략하면서도 명확한 식으로 표현할 수 있다.이러한 람다식은 메서드의 이름과 반환값을 제거할 수 있어 "익명함수" 라고도 한다. 기본 문법(매개변수) -> { 실행문 } 예시x -> x + 1(a, b) -> a + b() -> System.out.println("hello") ✔ 함수형 인터페이스(메서드가 1개인 인터페이스)를 구현할 때 사용✔ 함수형 인터페이스는 @FuntionalInterface 어노테이션을 사용한다. 2️⃣ Spring에서 람다식이 쓰이는 이유Spring 5 / Spring Boot 2 이후부터XML 설정 ❌익명 클래스 ❌람..
람다식이란?1️⃣ 람다식이란?JDK 1.8 부터 추가된 람다식(Lambda Expression)은 메서드를 하나의 식(Expression)으로 표현한것이다.람다식은 함수를 간략하면서도 명확한 식으로 표현할 수 있다.이러한 람다식은 메서드의 이름과 반환값을 제거할 수 있어 "익명함수" 라고도 한다. 기본 문법(매개변수) -> { 실행문 } 예시x -> x + 1(a, b) -> a + b() -> System.out.println("hello") ✔ 함수형 인터페이스(메서드가 1개인 인터페이스)를 구현할 때 사용✔ 함수형 인터페이스는 @FuntionalInterface 어노테이션을 사용한다. 2️⃣ Spring에서 람다식이 쓰이는 이유Spring 5 / Spring Boot 2 이후부터XML 설정 ❌익명 클래스 ❌람..
2026.01.05 -
1️⃣ HttpSession 이란?Servlet 컨테이너(Tomcat) 가 관리하는 서버 측 세션 객체클라이언트당 1개식별자는 JSESSIONID 쿠키Spring Security 는 필요할 때만 HttpSession 을 사용(기본 설정)보통 Spring Security 인증 성공 후 SecurityContextRepository 를 통해 인증정보를 저장한다. 2️⃣ HttpSession은 언제 생성될까?❌ 자동 생성되지 않는다HttpSession 은 요청이 왔다고 해서 무조건 생성되지 않는다.// HttpServletRequest requestrequest.getSession(false); // 세션 없으면 nullrequest.getSession(); // 없으면 생성 ✅ 생성되는 대표적인 경..
HttpSession 생명주기 (SecurityContextHolderFilter, HttpSessionSecurityContextRepository)1️⃣ HttpSession 이란?Servlet 컨테이너(Tomcat) 가 관리하는 서버 측 세션 객체클라이언트당 1개식별자는 JSESSIONID 쿠키Spring Security 는 필요할 때만 HttpSession 을 사용(기본 설정)보통 Spring Security 인증 성공 후 SecurityContextRepository 를 통해 인증정보를 저장한다. 2️⃣ HttpSession은 언제 생성될까?❌ 자동 생성되지 않는다HttpSession 은 요청이 왔다고 해서 무조건 생성되지 않는다.// HttpServletRequest requestrequest.getSession(false); // 세션 없으면 nullrequest.getSession(); // 없으면 생성 ✅ 생성되는 대표적인 경..
2025.12.31