RestController에서 redirect를 반환했는데 문자열만 보인다
Spring MVC에서 redirect:/done이 본문에 보인다면 뷰 이름과 ResponseBody 처리를 구분한다. 격리 MockMvc에서 Controller의 302, RestController의 200 본문, ResponseEntity의 명시적 303·Location을 비교하고 브라우저 이동은 검증 범위에서 분리한다.
빌드노트
Spring Boot 카테고리의 글입니다.
총 48개의 글
Spring MVC에서 redirect:/done이 본문에 보인다면 뷰 이름과 ResponseBody 처리를 구분한다. 격리 MockMvc에서 Controller의 302, RestController의 200 본문, ResponseEntity의 명시적 303·Location을 비교하고 브라우저 이동은 검증 범위에서 분리한다.
@CacheEvict는 기본적으로 정상 종료 뒤에 제거하므로 예외 호출에서는 키가 남는다. 실제 Spring 프록시와 로컬 캐시에서 정상·예외, 기본값·beforeInvocation=true, 자기 호출을 비교하고 실패해도 제거할 정책인지 판단한다.
@ConfigurationProperties는 기본적으로 모르는 키를 무시한다. Boot 3.5.7의 최소 컨텍스트에서 정상 키·오타·표기 변형·누락·prefix 오타를 비교하고, ignoreUnknownFields=false의 적용 범위와 필수값 검증의 차이를 확인한다.
Spring Boot 프로필에 List 한 항목을 적으면 기본 목록 전체가 교체된다. 기본·dev·Map만 추가·완성 목록의 실제 바인딩을 비교하고, List로 전체 집합을 지정할지 Map으로 이름별 속성을 유지·수정할지 고른다.
@Value 필드 주입은 생성자 실행 뒤에 일어난다. 생성자에서 만든 문자열이 초기값을 유지하는 관찰을 바탕으로, 생성자 매개변수 주입과 @PostConstruct 계산을 선택하는 기준을 설명한다.
일반 이벤트는 받는데 트랜잭션 리스너만 조용하다면 등록과 발행 순간의 트랜잭션을 나눠 확인한다. Spring 6.2.19와 H2에서 트랜잭션 없음·커밋·롤백을 비교하고, fallbackExecution이 커밋 이후 처리 계약을 어떻게 바꾸는지 살펴본다.
요청 인자의 @Valid와 자식 참조의 @Valid는 검증에서 맡는 위치가 다르다. 빈 이름·null 자식·정상 자식의 오류 경로, MockMvc 상태와 서비스 호출을 비교하고, 자식 객체를 필수로 받을 때 @NotNull을 더할 기준을 설명한다.
같은 @Transactional 메서드도 프록시를 거쳐 호출했는지에 따라 결과가 달라진다. Spring과 메모리 H2에서 트랜잭션 활성 상태·자동 커밋·예외 후 행 수를 비교하고, 서비스 분리와 TransactionTemplate, 바깥 트랜잭션 중 필요한 경계를 고른다.
트랜잭션이 활성화돼 있어도 기본 체크 예외는 커밋될 수 있다. Spring 6.2.19와 H2에서 예외별 종료 후 행 수를 비교하고, rollbackFor·ALL_EXCEPTIONS·예외를 잡아 정상 반환하는 경우를 구분한다.
Spring Boot 3.5.7의 자동 구성 매퍼는 모르는 JSON 속성을 무시했다. 오타·추가 필드·누락을 실제 요청으로 비교하고, FAIL_ON_UNKNOWN_PROPERTIES와 필수 값 검증을 각각 선택할 기준을 설명한다.
Spring MVC의 LocalDate 날짜 파라미터가 컨트롤러 진입 전에 400이 되는 조건을 비교한다. ISO 명시 여부와 두 Locale의 실제 결과를 바탕으로 요청 형식, 존재하지 않는 날짜, 누락을 구별한다.
오류 DTO의 status 필드가 400이어도 HTTP 응답은 200일 수 있다. 같은 예외와 JSON을 POJO·ResponseEntity·ResponseStatus로 비교하고, 처리 메서드에서 상태를 지정한 뒤 본문과 상태를 함께 검사하는 방법을 설명한다.