DBの接続設定を~.properties ファイルに書いたりします。
プロパティファイルから値を取得するクラスです。
シングルトンにしてあるのでちょっとだけいい感じかも?
個人的には設定は xml に書いた方が好き。
プロパティファイルは native2ascii とかしなきゃいけないからメンドイ。
プロパティファイルにこだわる人もいるけど、個人的にはどーでもいい。
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.net.URL;
import java.util.ArrayList;
import java.util.Properties;
/**
* プロパティファイル関連クラス
*/
public class AppProperties extends Properties {
/** serialVersionUID */
private static final long serialVersionUID = 1L;
/** プロパティファイル名 */
private static final String PROPERTY_FILENAME = "application.properties";
/** instance */
private static AppProperties instance = null;
/**
* インスタンス取得メソッド
*
* @return インスタンス
* @throws IOException プロパティファイルI/O例外
*/
public static synchronized AppProperties getInstance()
throws IOException {
if (instance == null) {
instance = new AppProperties();
}
return instance;
}
/**
* コンストラクタ
*
* @throws IOException プロパティファイルI/O例外
*/
@SuppressWarnings("unchecked")
private AppProperties() throws IOException {
try {
load(new FileInputStream(getFilePath()));
// URL での取得が失敗した場合、
// 実行時パスでの取得を試みます。
} catch (NullPointerException e) {
load(new FileInputStream(PROPERTY_FILENAME));
} catch (FileNotFoundException e) {
load(new FileInputStream(PROPERTY_FILENAME));
}
}
/**
* URL を含んだフォーマットでプロパティファイルの URL を取得します。
* Web アプリケーションでは URL でプロパティファイルを指定します。
*
* @return プロパティファイルの URL
*/
private String getFilePath() {
URL url = Thread.currentThread().getContextClassLoader()
.getResource(PROPERTY_FILENAME);
return url.getFile();
}
/**
* キーに対応するデータを取得します。
*
* test1=data1
* test2=data2
*
* ↑のようにプロパティファイルに設定されている場合、key に「test」を渡して下さい。
* String[] に{"data1","data2"}として返します。
* ※test=data という設定は本メソッドでは取得できません。
* getProperty を使用して下さい。
*
* また、該当するキーが存在しない場合には null をかえします。
*
* @param key キー
*
* @return データ
*/
public String[] getProperties(String key) {
ArrayList datalist = new ArrayList();
for (int cnt = 0;; cnt++) {
String data = getProperty(key + Integer.toString(cnt + 1));
if (!StringUtils.isEmpty(data)) {
datalist.add(data);
} else {
break;
}
}
if (datalist.size() == 0) {
return null;
}
return (String[]) datalist.toArray(new String[datalist.size()]);
}
}
0 コメント:
コメントを投稿