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

빌드노트

Spring Boot

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

글 검색

글 목록

총 48개의 글

  1. RestController에서 redirect를 반환했는데 문자열만 보인다

    Spring MVC에서 redirect:/done이 본문에 보인다면 뷰 이름과 ResponseBody 처리를 구분한다. 격리 MockMvc에서 Controller의 302, RestController의 200 본문, ResponseEntity의 명시적 303·Location을 비교하고 브라우저 이동은 검증 범위에서 분리한다.

  2. @CacheEvict 메서드가 예외를 던지면 캐시가 남는 이유

    @CacheEvict는 기본적으로 정상 종료 뒤에 제거하므로 예외 호출에서는 키가 남는다. 실제 Spring 프록시와 로컬 캐시에서 정상·예외, 기본값·beforeInvocation=true, 자기 호출을 비교하고 실패해도 제거할 정책인지 판단한다.

  3. @ConfigurationProperties 키를 틀렸는데 정상 시작하는 이유

    @ConfigurationProperties는 기본적으로 모르는 키를 무시한다. Boot 3.5.7의 최소 컨텍스트에서 정상 키·오타·표기 변형·누락·prefix 오타를 비교하고, ignoreUnknownFields=false의 적용 범위와 필수값 검증의 차이를 확인한다.

  4. Spring Boot 프로필에 서버 하나를 적으면 기본 List가 교체된다

    Spring Boot 프로필에 List 한 항목을 적으면 기본 목록 전체가 교체된다. 기본·dev·Map만 추가·완성 목록의 실제 바인딩을 비교하고, List로 전체 집합을 지정할지 Map으로 이름별 속성을 유지·수정할지 고른다.

  5. @Value 필드는 채워졌는데 생성자에서 만든 값은 왜 null일까

    @Value 필드 주입은 생성자 실행 뒤에 일어난다. 생성자에서 만든 문자열이 초기값을 유지하는 관찰을 바탕으로, 생성자 매개변수 주입과 @PostConstruct 계산을 선택하는 기준을 설명한다.

  6. 이벤트를 발행했는데 @TransactionalEventListener가 호출되지 않는다

    일반 이벤트는 받는데 트랜잭션 리스너만 조용하다면 등록과 발행 순간의 트랜잭션을 나눠 확인한다. Spring 6.2.19와 H2에서 트랜잭션 없음·커밋·롤백을 비교하고, fallbackExecution이 커밋 이후 처리 계약을 어떻게 바꾸는지 살펴본다.

  7. @Valid를 붙였는데 자식 DTO의 빈 문자열이 통과한 이유

    요청 인자의 @Valid와 자식 참조의 @Valid는 검증에서 맡는 위치가 다르다. 빈 이름·null 자식·정상 자식의 오류 경로, MockMvc 상태와 서비스 호출을 비교하고, 자식 객체를 필수로 받을 때 @NotNull을 더할 기준을 설명한다.

  8. 같은 클래스에서 부른 @Transactional 메서드는 왜 롤백되지 않을까

    같은 @Transactional 메서드도 프록시를 거쳐 호출했는지에 따라 결과가 달라진다. Spring과 메모리 H2에서 트랜잭션 활성 상태·자동 커밋·예외 후 행 수를 비교하고, 서비스 분리와 TransactionTemplate, 바깥 트랜잭션 중 필요한 경계를 고른다.

  9. 예외가 났는데 INSERT가 남았다면: 체크 예외의 롤백 규칙

    트랜잭션이 활성화돼 있어도 기본 체크 예외는 커밋될 수 있다. Spring 6.2.19와 H2에서 예외별 종료 후 행 수를 비교하고, rollbackFor·ALL_EXCEPTIONS·예외를 잡아 정상 반환하는 경우를 구분한다.

  10. Spring Boot에서 JSON 필드 오타가 200으로 통과할 때

    Spring Boot 3.5.7의 자동 구성 매퍼는 모르는 JSON 속성을 무시했다. 오타·추가 필드·누락을 실제 요청으로 비교하고, FAIL_ON_UNKNOWN_PROPERTIES와 필수 값 검증을 각각 선택할 기준을 설명한다.

  11. Spring LocalDate 날짜 파라미터가 컨트롤러 진입 전에 400이 될 때

    Spring MVC의 LocalDate 날짜 파라미터가 컨트롤러 진입 전에 400이 되는 조건을 비교한다. ISO 명시 여부와 두 Locale의 실제 결과를 바탕으로 요청 형식, 존재하지 않는 날짜, 누락을 구별한다.

  12. Spring 예외 처리기가 에러 JSON을 반환해도 200인 이유

    오류 DTO의 status 필드가 400이어도 HTTP 응답은 200일 수 있다. 같은 예외와 JSON을 POJO·ResponseEntity·ResponseStatus로 비교하고, 처리 메서드에서 상태를 지정한 뒤 본문과 상태를 함께 검사하는 방법을 설명한다.