DBのパスワードや、サーバのIPアドレスなどは、プログラム中にハードコーディングしてしまうと、変更するたびにテストし直さなけれbいけなくなってしまいます。
プロパティは外にあるファイルとして、別に定義したいです。
そんなときに使うのが、Propertiesクラスです。
Javaではプロパティファイルを外部ファイルとして読み込んで、その値を使うことができます。
以下のようにプロパティファイルを読み込むのが定石となっています。
Properties prop = new Properties(); try { prop.load(new FileInputStream(PROP_FILE)); } catch (IOException e) { e.printStackTrace(); }
今回は、以下のようなtest.propertiesというファイルを読み込んで、その値をkeyとvalueにしてJavaのMapオブジェクトに詰め込んでみます。
#このサイトから→http://otndnld.oracle.co.jp/products/jdev/htdocs/1013/jdev_oc4jdp4/jdev_oc4jdp4_buildsample.html # JDeveloperをインストールしたディレクトリ jdev.home=D:/JDeveloper # OC4Jをインストールしたディレクトリ oracle.home=D:/oc4j # Modelプロジェクトの設定 model.dir=../Model model.src.dir=${model.dir}/src model.output.dir=${model.dir}/classes
実際に読み込みを行うプログラムは以下のとおりです。
package example; import java.io.FileInputStream; import java.io.IOException; import java.util.HashMap; import java.util.Map; import java.util.Map.Entry; import java.util.Properties; public class Samples { private final String PROP_FILE = "test.properties"; public Map getPropertiesMap() { Map propertiesMap = new HashMap(); Properties prop = new Properties(); try { prop.load(new FileInputStream(PROP_FILE)); } catch (IOException e) { e.printStackTrace(); } for (Entry<Object, Object> e : prop.entrySet()) { propertiesMap.put(e.getKey(),e.getValue()); } return propertiesMap; } }
このメソッドがちゃんと機能しているかどうか、JUnitを使ってテストしてみます。
package example; import static org.hamcrest.CoreMatchers.*; import static org.junit.Assert.*; import java.util.Iterator; import java.util.Map; import org.junit.Test; public class SamplesTest { @Test public void プロパティファイルから取ったMapのサイズが5() { Samples sample = new Samples(); Map map = sample.getPropertiesMap(); Iterator ite = map.entrySet().iterator(); while (ite.hasNext()) { Map.Entry pairs = (Map.Entry)ite.next(); System.out.println("key:" + pairs.getKey() + "\tvalue:" + pairs.getValue()); } assertThat(map.size(),is(5)); } }
結果、コンソールには以下のように表示されます。
key:model.src.dir value:${model.dir}/src key:model.dir value:../Model key:jdev.home value:D:/JDeveloper key:model.output.dir value:${model.dir}/classes key:oracle.home value:D:/oc4j
テストはグリーンで、コメントは無視されて、5つのプロパティを取得することができたようです。
- 作者: 井上誠一郎,永井雅人
- 出版社/メーカー: 技術評論社
- 発売日: 2014/11/01
- メディア: 大型本
- この商品を含むブログ (1件) を見る