728x90
반응형

ResourceBundle 을 이용한 MessageSource 구현


그동안엔 SpringFramework 을 기본으로 적용하다 보니 MessageSource 를 직접 구현할일이 없었는데 이번에 Vert.x 로 서버를 만들면서 사용자에게 발송할 메세지를 템플릿화 할 필요가 있어서 java.util.ResourceBundle 을 이용하여 직접 구현하였다. 
프로젝트는 Maven 기반이었고  resources 아래에 message.properties 를 만들어넣고 resources 디렉토리를 classpath 에 등록한다.
 
템플릿에서 변수는 순서에따라 {0} {1} {2} 식으로 작성한다. 

/resources/message.properties
message.1={0}고객님 안녕하세요. 오늘 날짜는 {1} 입니다.


import java.util.ResourceBundle;

public class MessageSourceUtils {

private ResourceBundle bundle;

private static MessageSourceUtils instance = new MessageSourceUtils();

private MessageSourceUtils() {
bundle = ResourceBundle.getBundle("messages");
}

public static MessageSourceUtils getInstance() {
return instance;
}

public String getMessage(String key) {
return bundle.getString(key);
}

public String getMessage(String key, String... replaceTexts) {
String message = getMessage(key);
if (replaceTexts == null) {
return message;
}

for (int i = 0; i < replaceTexts.length; i++) {
message = message.replace("{" + i + "}", replaceTexts[i]);
}

return message;
}
}



사용 방법

MessageSourceUtils messageUtils = MessageSourceUtils.getInstance();
String sendMessage = messageUtils.getMessage("message.1", "이상훈",LocalDate.now().format(DateTimeFormatter
.ofPattern("yyyy-MM-dd")));




728x90
반응형

+ Recent posts