만약에 하드코딩된 UI 데이터를 서버단에서 바꿔주어야 할때 일일이 하나씩 바꾼다면 얼마나 지난한 작업이 될 것인가.
스프링에서 글자와 관련된 데이터를 하드코딩 하지 않고 데이터로 가지고 있으면서 필요할때 사용할수 있다.
이것은 리액트와 연동시에도 가능하고, thymeleaf 같은 템플릿엔진에도 적용할 수 있다
1 메세지 데이터 소스
기본적으로 메시지소스 설정은 스프링 빈 중 MessageSource라는 빈을 수정해서 사용할 수 있다
@Bean
public MessageSource messageSource() {
ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource();
messageSource.setBasenames("messages", "errors");
messageSource.setDefaultEncoding("utf-8");
return messageSource;
}
basenames : 설정 파일의 이름을 지정할 수 있다
* /resources 하위에서 찾는다.
* /resources/messages.properties
defaultEncoding : 기본 인코딩 설정 적용 가능
추가로 다른 설정들은 spring doc의 application.properties 부분을 참고하자.
여기를 참고하면 된다. 여기서 spring.messages. 라고 검색해보자
2 국제화 기능
국제화 기능은 메세지 데이터 소스 파일명 뒤에 로케일을 붙여ㅂ주면 된다.
/resources/messages.properties -> /resources/messages_en.properties , /resources/messages_ko.properties
등으로 나눠서 작성하면 된다
3 그 외
messages.properties 에서
hello=안녕
hello.name = 안녕 {0}
이렇게 작성하면 배열의 첫번째 값을 hello.name을 출력했을 때 같이 동적으로 보여줄 수 있다.
public interface MessageSource {
String getMessage(String code, @Nullable Object[] args, @Nullable String
defaultMessage, Locale locale);
String getMessage(String code, @Nullable Object[] args, Locale locale) throws
NoSuchMessageException;
}
이러한 인터페이스에서 두번째 메소드 인자인 args에 원하는 배열 값을 넣는 것이다
'BackEnd > Spring' 카테고리의 다른 글
쿼리파라미터 로그 남기는 법 (0) | 2023.11.08 |
---|---|
[TroubleShooting] yaml 파일 문법 (0) | 2023.11.08 |
[Spring Demo] Thymeleaf 템플릿 엔진 알아보기 (0) | 2023.09.22 |