Java properties 에서 문자 치환하기.

Contents

저는 아래와 같은 properties 파일을 만들고,

1
UNKNOWNERROR=알 수 없는 오류입니다.(ERRORCODE)

아래와 같은 코드로 ERRORCODE를 대체해 왔습니다.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
package com.idatabank.sso.exception;

import java.util.ResourceBundle;

public class SSOException extends Exception {
    public SSOException() {
        super();
    }
    
    public SSOException(String errorType) {
        super(errorType);
        
        userMessage = rb.getString(errorType);
        
        if ( userMessage == null ) {
            userMessage = rb.getString("UNKNOWNERROR").replaceAll("ERRORCODE", errorType);
        }
    }
    
    /**
     * 사용자 에러 메시지를 세팅한다.
     * @param userMessage
     */
    public void setUserMessage(String userMessage) {
        this.userMessage = userMessage;
    }
    
    /**
     * 사용자 에러 메시지를 반환한다.
     * @return
     */
    public String getUserMessage() {
        return userMessage;
    }
    
    private String userMessage = null;
    private static final ResourceBundle rb = ResourceBundle.getBundle("com.idatabank.sso.exception.Messages");
}

그런데, 오늘 문자열 치환의 새로운 방법을 찾았습니다.

1
http.method_not_implemented=Method {0} is not defined in RFC 2068 and is not supported by the Servlet API 
1
2
3
4
      String errMsg = rb.getString("http.method_not_implemented");
      Object[] errArgs = new Object[1];
      errArgs[0] = method;
      errMsg = java.text.MessageFormat.format(errMsg, errArgs);

이 방법이 좀더 우아해 보입니다.

Related Content