programing

Spring Boot에서 '@DateTimeFormat' 패턴을 글로벌하게 구성하는 방법은?

subpage 2023. 9. 26. 22:22
반응형

Spring Boot에서 '@DateTimeFormat' 패턴을 글로벌하게 구성하는 방법은?

나는 내 Spring Boot 애플리케이션이며, 쿼리 매개 변수로 날짜를 받아들이는 일부 컨트롤러가 있습니다.

@RestController
public class MyController {

  @GetMapping
  public ResponseEntity<?> getDataByDate(
      @RequestParam(value = "date") @DateTimeFormat(iso = DateTimeFormat.ISO.DATE)
      final LocalDate date) {
    return ResponseEntity.ok();
  }
}

이것은 잘 작동하고, 나는 심지어 파라미터를 선택적으로 표시할 수 있습니다.@RequestParam(value = "date", required = false)그 다음에 a를 사용합니다.Optional<LocalDate>. 스프링은 이 모든 것을 처리하고 파라미터가 누락된 경우 빈 Optional(선택사항)을 전달합니다.

날짜를 쿼리 매개 변수로 사용하는 컨트롤러가 여러 개 있으므로 모두에게 이 동작을 구성합니다.LocalDate쿼리 매개 변수입니다.나는 시도해봤습니다.spring.mvc.date-pattern재산이지만, 그것은 단지 그에게 효과가 있는 것처럼 보입니다.java.util.Date.

그래서 웹을 검색한 결과, 제가 생각해낸 최고의 것은.ControllerAdvice저는 이 답변에서 채택했습니다.이 솔루션의 문제는 처리할 수 없다는 것입니다.Optional<LocalDate>더이상.Spring Boot에서 동작을 구성하는 방법이 잘못된 것 같습니다.

그래서 제 질문은:패턴을 전체적으로 구성하려면 어떻게 해야 합니까?LocalDateSpring Boot에서 관용적인 방식으로 쿼리 매개변수로 사용되는 경우?

현재는 이 작업을 쉽게 수행할 수 없습니다(예: 간단한 구성 속성 설정). #5523을 참조하십시오.내가 지금까지 찾은 가장 좋은 해결책은 a를 등록하는 것입니다.Formatter<LocalDate>. 다음과 같이 모델링된 옵션 파라미터에서도 작동합니다.Optional<LocalDate>:

  @Bean
  public Formatter<LocalDate> localDateFormatter() {
    return new Formatter<LocalDate>() {
      @Override
      public LocalDate parse(String text, Locale locale) throws ParseException {
        return LocalDate.parse(text, DateTimeFormatter.ISO_DATE);
      }

      @Override
      public String print(LocalDate object, Locale locale) {
        return DateTimeFormatter.ISO_DATE.format(object);
      }
    };
  }

#9930의 내 제안이 병합되었을 때 구성 속성을 사용하여 이를 설정하는 것이 있습니다.

spring.mvc.format.date를 사용할 수 있습니다.spring.mvc.format.time그리고.spring.mvc.format.date-time

예를 들어,
spring.mvc.format.time=HH:mm:ss
spring.mvc.format.date=iso
spring.mvc.format.date-time=iso-offset

위의 예와 같이 단축키를 사용할 수 있습니다.isoа드iso-offset스프링부츠 2.4.1부터

@britter: 감사합니다.

spring.mvc.date-format= # Date format to use. For instance, dd/MM/yyyySpring Boot 2.1.0.x와 잘 작동함

# SPRING MVC(WebMvcProperties) 속성 참조.

업데이트: 하지만 Spring Data Rest Param에서는 작동하지 않습니다.

언급URL : https://stackoverflow.com/questions/45440919/how-to-globally-configure-datetimeformat-pattern-in-spring-boot

반응형