본문 바로가기
빌드노트 검색

빌드노트

Spring Boot

Spring Boot 카테고리의 글입니다.

글 검색

글 목록

총 48개의 글

  1. multipart 요청인데 @RequestPart JSON 메타데이터가 415로 막힌다

    전체 요청이 multipart/form-data여도 @RequestPart DTO는 해당 파트의 Content-Type에 따라 읽힌다. 같은 JSON 바이트의 타입 누락·octet-stream·application/json과 깨진 JSON을 MockMvc로 비교하고, JSON Blob에 타입을 지정하는 수정과 boundary 확인 위치를 구분한다.

  2. JSON을 보냈는데 @ModelAttribute의 name은 null이다

    JSON 본문은 @ModelAttribute의 폼·쿼리 바인딩과 다른 경로로 읽힌다. 같은 DTO에 요청 매개변수·폼·JSON을 보내 얻은 응답을 비교하고, 200인데 필드가 null인 경우와 변환기가 지원하지 않아 415인 경우를 구분한다.

  3. BindingResult가 있는데도 폼 검증 오류가 400으로 끝난다면

    폼 검증 오류가 있는데 BindingResult의 hasErrors() 분기에 도달하지 못하면 인자 순서를 확인한다. Spring MVC 6.2.19에서 인접·분리 배치에 빈 이름과 정상 이름을 보내, 400 예외와 메서드 진입 여부가 달라지는 조건을 비교했다.

  4. MultipartFile은 있는데 내용은 0바이트다

    Spring MVC의 필수 파일 파트가 있어도 내용은 0바이트일 수 있다. MockMvc에서 파트 누락·빈 파일명·이름 있는 빈 파일·내용 있는 파일을 비교하고, required와 isEmpty()로 누락과 빈 내용을 각각 처리하는 조건을 확인한다.

  5. @Profile에 dev와 local을 넣었는데 dev만 켜도 빈이 생긴다

    @Profile({"dev", "local"})는 두 프로필 중 하나만 활성화되어도 빈을 등록한다. Spring 6.2.12의 새 컨텍스트 네 개에서 배열과 "dev & local"의 등록 결과를 비교하고, 필요한 조합에 맞춰 조건을 고치는 방법을 설명한다.

  6. ConfigurationProperties Map 키에서 슬래시가 사라지는 이유

    ConfigurationProperties로 받은 Map에서 /api가 api로 바뀌면 키 표기를 확인한다. properties 입력 8개를 String·Object 맵에 각각 바인딩해 슬래시 제거와 점의 중첩 해석을 비교하고, 원문 키를 보존할 대괄호 위치를 설명한다.

  7. Spring 설정에 @Min을 붙여도 음수로 시작하는 이유

    @Min은 숫자 범위를 선언하지만 설정 바인딩 자체를 막지는 않는다. Boot 3.5.7의 격리 실행으로 @Validated 전후, 검증 구현체 누락, 정상값과 타입 변환 오류를 비교하고 실제 설정 빈의 등록·검증 조건을 확인한다.

  8. 매일 실행하려던 Spring cron이 한 시간마다 돈다

    Spring cron의 초·분·시 필드를 확인해 매시 식과 자정 식을 구별한다. 실제 cron과 시간대를 넣은 짧은 next 계산으로 다음 세 시각을 확인하고, UTC 자정과 서울 자정의 9시간 차이를 읽는다.

  9. JAR 안에 템플릿이 있는데 ClassPathResource.getFile()은 실패한다

    classpath 자원이 존재해도 getFile()은 실패할 수 있다. 디렉터리와 일반 실행 JAR에서 URL·File·스트림을 직접 비교하고, 스트림 읽기와 실제 File 입력을 고르는 기준을 정리한다.

  10. RestClient의 400 응답 본문은 예외 안에 남아 있다

    RestClient의 기본 400·500 예외에서 상태, Content-Type, 본문을 읽고 성공 DTO와 오류 DTO를 분리한다. Spring 6.2.12와 loopback 서버로 본문 보존, toEntity의 예외, onStatus의 스트림 소비 차이를 실제 비교했다.

  11. 파일 하나는 올라가는데 두 개를 보내면 Spring 업로드가 실패한다

    파일별 한도보다 작은 파일도 묶어서 보내면 multipart 요청 전체 한도를 넘을 수 있다. 실제 Tomcat 서버에서 파일·요청 한도를 따로 바꾸고, 파일 합계에 포함되지 않는 boundary·파트 헤더와 내부 예외를 확인해 어느 한도를 조정할지 구분한다.

  12. JdbcTemplate queryForObject는 0행을 null로 돌려주지 않는다

    JdbcTemplate의 0행은 예외이고 SQL NULL 한 행은 null이다. Spring JDBC/H2에서 네 결과를 실제 비교하고, 0행만 처리하는 방법과 행 부재·NULL을 구별하는 목록 조회를 설명한다.