最終更新: toriaezuikioi 2010年09月15日(水) 17:49:36履歴
(Propertiesクラスのjavadoc)
DB接続の情報とか、業務で結構秘密にしたい定数とかを、
Javaのソースに埋め込んでおくのは結構ヤヴァイらしいので、
そうゆう情報はプロパティファイルに出しておくといいらしいよ(他人事
ほら、本番と開発では使うDBが違うだろうし、リリースの度にDB周りのソースをいじるのは、
「開発環境のままリリースしちゃった(テヘッ」
みたいな笑えない自体になりかねないので、外出し(性的な意味は無い)がいいよ。
プロパティファイルって何ぞ?
こんな感じで使う
プロパティファイルを指定して取得する。
プロパティファイルをクラスパスから取得する。
DB周りのデータを持ってくるようなサンプル
DB接続の情報とか、業務で結構秘密にしたい定数とかを、
Javaのソースに埋め込んでおくのは結構ヤヴァイらしいので、
そうゆう情報はプロパティファイルに出しておくといいらしいよ(他人事
ほら、本番と開発では使うDBが違うだろうし、リリースの度にDB周りのソースをいじるのは、
「開発環境のままリリースしちゃった(テヘッ」
みたいな笑えない自体になりかねないので、外出し(性的な意味は無い)がいいよ。
プロパティファイルって何ぞ?
こんな感じで使う
プロパティファイルを指定して取得する。
プロパティファイルをクラスパスから取得する。
DB周りのデータを持ってくるようなサンプル
プロパティファイルとは…
・拡張子が「.properties」…と書いてみたものの、場合によってはどうでもいい(ぉぃ
・中身が「key = value」形式。
為にならないけど書き方は問題ない例, toriaezu.properties
・拡張子が「.properties」…と書いてみたものの、場合によってはどうでもいい(ぉぃ
・中身が「key = value」形式。
為にならないけど書き方は問題ない例, toriaezu.properties
新一 = コナン コナン = バーロー 真実 = いつも一つ 本気 = マジ 長門 = 俺の嫁 欝だ = 死のう ippai = oppai 僕 = 元気
- プロパティクラスをインスタンス化
- InputStreamを生成(Pathを固定にするか、クラスパスからにするかで違う※後述)
- プロパティクラスのloadメソッドに上で生成したStreamを渡す
- プロパティクラスの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先生に聞いてくだしあ。
・ファイル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
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 = daredakkeDBデータ取得メソッド
/* * 引数にどの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; }
コメントをかく