Error 메시지 관리하기

금은체리·2023년 12월 2일
1

Spring

목록 보기
48/49

Spring의 proerties 파일을 이용한 에러 메시지 관리

  • Spring의 properties 파일을 이용한 에러 메시지 관리

    • Spring에서는 properties 파일을 이용하여 에러 메시지 관리 가능
    • 에러 메시지는 properties 파일에서 key-value 형태로 작성되며, 작성된 값은 messageSource 를 Bean으로 등록하여 사용 가능
    • messages.properties
      below.min.my.price=최저 희망가는 최소 {0}원 이상으로 설정해 주세요.
      not.found.product=해당 상품이 존재하지 않습니다.
  • Spring Boot에서는 messageSource 가 자동으로 Bean으로 등록됨

private final MessageSource messageSource;

...

@Transactional
public ProductResponseDto updateProduct(Long id, ProductMypriceRequestDto requestDto) {
    int myprice = requestDto.getMyprice();
    if (myprice < MIN_MY_PRICE) {
        throw new IllegalArgumentException(messageSource.getMessage(
                "below.min.my.price",
                new Integer[]{MIN_MY_PRICE},
                "Wrong Price",
                Locale.getDefault()
        ));
    }

    Product product = productRepository.findById(id).orElseThrow(() ->
            new ProductNotFoundException(messageSource.getMessage(
                    "not.found.product",
                    null,
                    "Not Found Product",
                    Locale.getDefault()
            ))
    );

    product.update(requestDto);

    return new ProductResponseDto(product);
}
    • Exception 클래스를 직접 구현하여 사용 가능

      package com.sparta.myselectshop.exception;
      
      public class ProductNotFoundException extends RuntimeException{
          public ProductNotFoundException(String message) {
              super(message);
          }
      }
    • messagesSource.getMessage() 메서드

      • 첫 번째 파라미터는 messages.properties 파일에서 가져올 메시지의 키 값을 전달
      • 두 번째 파라미터는 메시지 내에서 매개변수를 사용할 경우 전달하는 값
      • 세번째 파라미터는 언어 설정 전달
        • Locale.getDefault() 메서드는 기본 언어 설정을 가져오는 메서드
profile
전 체리 알러지가 있어요!

0개의 댓글