Spring의 properties 파일을 이용한 에러 메시지 관리
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()
메서드는 기본 언어 설정을 가져오는 메서드