Spring Boot는 별다른 설정 없이 자동으로 기본으로 사용할 다양한 기능을 초기화 해준다. 이 중 message와 i18n 기능을 사용하면 클라이언트에 전송할 결과, 에러 문자열을 다른 방식이나 소스 내 하드 코딩 하지 않고 설정한 값으로 사용 가능하다.
❓기본 설정 범위
messageSource 빈의 기본 설정 범위는 다음과 같다.
기본 ClassLoader 사용
messages로 이름 사용
UTF-8 인코딩 사용
각 locale별 message bundle 캐시 처리
📏 기본 설정이 적용 되는 범위
[Java Spring] 내부 구현을 통한 MessageSource, Validation 동작 원리 탐구에서 살펴본 내용과 같이 모든 jakarta, spring framework에서 적용되는 validation에 모두 message를 적용 할 수 있다.
또한 Spring Boot가 기본 생성한 MessageSource bean을 이용하면 어디서든 사용 할 수 있다.
📂 파일 생성 방법
resources 디렉터리 내 properties 파일을 만든다.
파일 이름은 기본 locale 설정의 경우 messages.properties다.
추가 locale 설정의 경우 각 지역 명 축약어에 따라 설정한다.
ex)
기본 : messages.properties
한국 : messages_ko.properties
영어 : messages_en.properties
🧑💻 사용 방법
유효성 검증 어노테이션
public record Request( @NotBlank(message = "{com.example.NotBlank.message}" Integer id, ) {}
@Documented @Constraint(validatedBy = JsonValidator.class) @Target({ElementType.FIELD, ElementType.ANNOTATION_TYPE}) @Retention(RetentionPolicy.RUNTIME) public @interface Json { String message() default "{com.example.constraints.Json.message}"; Class<?>[] groups() default {}; Class<?>[] payload() default {}; }
설정 메시지 가져오기
public class Message { @Autowired private MessageSource messageSource; public void message() { messageSource.getMessage("com.example.constraints.Json.message", null, Locale.getDefault()); } }
🏁결론
커스텀 메시지 사용이 필요하다면 스프링에서 기본 제공해주는 기능을 이용한다.