목록2025/06/05 (5)
che01 님의 블로그
Spring에서 타입 변환을 총괄 관리하는 서비스입니다.쉽게 말하면 "변환기들의 매니저" 같은 존재입니다.왜 필요한가?웹에서 우리한테 오는 데이터들을 생각해보세요:사용자가 폼에 입력한 나이: "25" (문자열)URL 파라미터로 온 날짜: "2023-12-25" (문자열)설정 파일의 값: "true" (문자열)하지만 우리가 코드에서 원하는 것:int age = 25LocalDate date = LocalDate.of(2023, 12, 25)boolean flag = true문자열 → 원하는 타입 으로 변환이 필요합니다.ConversionService가 하는 일변환기들을 모아서 관리// 여러 변환기들을 등록해서 관리conversionService.addConverter(new StringToIntegerCo..
웹 개발하다 보면 항상 맞닥뜨리는 귀찮은 일이 하나 있다. HTTP로 넘어오는 모든 데이터는 문자열인데, 실제로는 숫자나 날짜, 객체로 써야 한다는 것. 매번 Integer.valueOf() 이런 식으로 변환하기엔 너무 번거롭다.문제 상황// HTTP 요청: GET /users?age=25&active=true// 실제로 받는 건 이거String age = request.getParameter("age"); // "25"String active = request.getParameter("active"); // "true"// 근데 쓸 때는 이래야 함int userAge = Integer.valueOf(age);boolean isActive = Boolean.valueOf(active);Sp..
Spring MVC를 사용하다 보면 기본 제공 기능으로는 해결되지 않는 특수한 요구사항을 마주하게 됩니다. 예를 들어, HTTP 헤더에서 사용자 정보를 추출해 컨트롤러에 자동 주입하거나, 특정 응답 포맷을 커스터마이징해야 하는 경우가 있죠. 이때 WebMvcConfigurer를 활용하면 프레임워크 레벨에서 우아하게 해결할 수 있습니다.WebMvcConfigurer란?WebMvcConfigurer는 Spring MVC의 기본 동작을 커스터마이징할 수 있는 설정 인터페이스입니다. 이를 구현하면 Spring MVC의 핵심 컴포넌트들을 확장하거나 변경할 수 있어, 애플리케이션의 특수한 요구사항에 맞게 프레임워크를 조정할 수 있습니다.핵심 컴포넌트와 활용법1. ArgumentResolver로 파라미터 주입 커스터..
핵심 개념 정리기본 용어 이해메서드: 기능을 정의한 코드 블록 (Java에서는 함수를 메서드라고 부름)파라미터: 외부에서 전달받을 값을 담을 변수 (String name)인자(Argument): 실제로 전달하는 값 ("우주먼지")리턴값: 메서드 실행 후 돌려주는 결과 ("Hello, 우주먼지")public String sayHello(String name) { // name: 파라미터 return "Hello, " + name; // "Hello, 우주먼지": 리턴값}// sayHello("우주먼지")에서 "우주먼지"가 인자Spring MVC 요청 처리 흐름전체 구조HTTP 요청 → DispatcherServlet → HandlerMapping → RequestMappingHan..
언제 이런 일이 일어날까?클라이언트에서 서버로 JSON 데이터를 보낼 때를 생각해보자.{ "name": "우주먼지", "age": 25}Spring 컨트롤러는 이런 식으로 받는다:@PostMapping("/hello")public void hello(@RequestBody User user) { // JSON이 어떻게 User 객체로 변환되지?}@RequestBody를 본 Spring의 반응Spring이 @RequestBody 어노테이션을 발견하면:"아! JSON 본문을 자바 객체로 바꿔야 하는구나! 이건 내가 직접 처리할 수 없으니까 HttpMessageConverter를 불러야겠어."HttpMessageConverter들의 경쟁Spring에는 여러 기본 컨버터들이 있고, 각자 "내가 할 수 ..