うん、なんかメモ的なアレ

Propertiesクラスのjavadoc
DB接続の情報とか、業務で結構秘密にしたい定数とかを、
Javaのソースに埋め込んでおくのは結構ヤヴァイらしいので、
そうゆう情報はプロパティファイルに出しておくといいらしいよ(他人事
ほら、本番と開発では使うDBが違うだろうし、リリースの度にDB周りのソースをいじるのは、
「開発環境のままリリースしちゃった(テヘッ」
みたいな笑えない自体になりかねないので、外出し(性的な意味は無い)がいいよ。

プロパティファイルって何ぞ?
こんな感じで使う
プロパティファイルを指定して取得する。
プロパティファイルをクラスパスから取得する。
DB周りのデータを持ってくるようなサンプル
プロパティファイルとは…
・拡張子が「.properties」…と書いてみたものの、場合によってはどうでもいい(ぉぃ
・中身が「key = value」形式。
為にならないけど書き方は問題ない例, toriaezu.properties
新一 = コナン
コナン = バーロー
真実 = いつも一つ
本気 = マジ
長門 = 俺の嫁
欝だ = 死のう
ippai = oppai
僕 = 元気
  1. プロパティクラスをインスタンス化
  2. InputStreamを生成(Pathを固定にするか、クラスパスからにするかで違う※後述)
  3. プロパティクラスのloadメソッドに上で生成したStreamを渡す
  4. プロパティクラスのgetPropertyメソッドを使って、プロパティ内の値をゲットだぜ!!

プロパティファイルの配置場所:C:\見ちゃイヤ\toriaezu.properties
public class LogTest {

	public static void main(String[] args) throws Exception {
                // プロパティクラスをインスタンス化
		Properties prop = new Properties();
                // InputStreamを生成
		InputStream in = new FileInputStream("C:\\見ちゃイヤ\\toriaezu.properties");
                // プロパティクラスのloadメソッドに上で生成したStreamを渡す
                prop.load(in);
                // プロパティクラスのgetPropertyメソッドを使って、プロパティ内の値をゲットだぜ!!
                System.out.println("ippaiのキーは" + prop.getProperty("ippai"));
	}
}
実行結果:ippaiのキーはoppai
プロパティファイルの場所を固定してもいいけど…
・ファイルPathって開発と本番で違くね?
・ファイルPathもある意味、外出ししたい情報だよね。
・ってか、どっちの環境でも共通に持ってこれる場所ねぇの?
となったときに役立つのが、クラスパスというもの。

クラスパスって何?
→システム環境変数
→Javaのアプリケーションを実行するときに、Java VMが、
 どの“場所”からクラスファイルを読み込めばよいかを指定するためのもの。
→Eclipseで作ったプロジェクトで言うと、srcフォルダの中(多分
※あまり詳しくないので、Google先生に聞いてくだしあ。
そんなわけでクラスパスから呼び出すソース
toriaezu.propertiesをsrcフォルダ直下に配置(開発はEclipseでやってね)
public class LogTest {

	public static void main(String[] args) throws Exception {
                // プロパティクラスをインスタンス化
		Properties prop = new Properties();
                // InputStreamを生成(getClass().getResourceAsStreamでStreamを取得)
		InputStream in = getClass().getResourceAsStream("/toriaezu.properties");
                // プロパティクラスのloadメソッドに上で生成したStreamを渡す
                prop.load(in);
                // プロパティクラスのgetPropertyメソッドを使って、プロパティ内の値をゲットだぜ!!
                System.out.println("ippaiのキーは" + prop.getProperty("ippai"));
	}
}
JDBCを使ってConnectionを張る時に、
DB の URL,ユーザー名,パスワード が必要になります(大抵は
また1つのシステムで2つ以上のDBを使用することもあったりします。
それらをプロパティファイルで管理すれば、開発環境と本番環境で切り替えが楽だよね(キリッ
そんなわけで、それらをまとめて持ってくるようなメソッドを作ってみたよよ。
※コピペでの使用は自己責任で(バグっても責任は取らん

db.properties
db1.url = jdbc:mysql://localhost:3306/nagato
db1.name = yuki
db1.pass = orenoyome
db2.url = jdbc:mysql://localhost:3306/asakura
db2.name = ryoko
db2.pass = mayuge
db3.url = jdbc:oracle:thin:@localhost:1521:kimidori
db3.name = emiri
db3.pass = daredakke
DBデータ取得メソッド
/*
 * 引数にどのDBデータを持ってくるかのNOを指定。
 * 戻りはStringの配列でstr[0] = name ,str[1] = pass ,str[2] = url が返ってくる。
 * ちなみに、指定NOのKeyとかValueがないときはその値はNULLになるように、
 * getPropertyの第2引数にnullをセットした。(デフォルト値の設定)
 */
public String[] getDbData(int dbNo) throws Exception {
	Properties prop = new Properties();
	InputStream in = getClass().getResourceAsStream("/db.properties");
	prop.load(in);
	String[] strs = { prop.getProperty("db" + dbNo + ".name", null),
			prop.getProperty("db" + dbNo + ".pass", null),
			prop.getProperty("db" + dbNo + ".url", null) };
	return strs;
}

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

メンバーのみ編集できます