大規模プロジェクトは、私たちは多くの場合、一元管理の我々のシステムの構成情報を持っている、一般的には、構成情報とcfg.propertiesファイルを設定することであり、我々は、システムを初期化するときに、システムが自動的に設定cfg.propertiesを読み込みキー値(キーと値のペア)を提出した後、我々は、システムの初期設定をカスタマイズします。
だから、通常の状況下で、我々は、使用java.util.Propertiesはつまり、Javaが所有しています。多くの場合、問題は毎回ロードされたが、我々はすべてのコーディングトラブルに手動で設定ファイルを読み込む必要があり、第二に、コードがエレガントではありませんが、多くの場合、我々は読み込みおよび格納するために、独自の特殊なクラスを作成することであり設定情報。
春はPropertyPlaceholderConfigurerが設けられています。
このクラスは、BeanFactoryPostProcessorのサブクラスです。(私は、次について話すことができ、理解できる理解できない、自分の母親の程度を知ってはいけません)
主要な原則はい。Springコンテナの初期化時には、初期化さビーンのxmlまたは注釈を読み込みます。初期化時間は、このPropertyPlaceholderConfigurerインターセプト豆がされ
た構成での私たちの性質に応じて交換し、$ {pnameのが}交換する時に設定されるであろう、初期化。発現を達成するために、交換作業。
原則を完全に理解した後、我々は、その実装の方法を見て。
私たちのクラスパスにcfg.propertiesを作成します。
コンテンツ#cfg.properties構成ファイル 名 = ジェイ パスワード = 123
ここではSpring構成ファイルのコードは次のとおりです。
< 豆のxmlns = "http://www.springframework.org/schema/beans" のxmlns:XSI = "http://www.w3.org/2001/XMLSchema-instance" のxsi:schemaLocationの= "のhttp:// WWW .springframework.org /スキーマ/豆http://www.springframework.org/schema/beans/spring-beans.xsd」> < 豆のクラス= "org.springframework.beans.factory.config.PropertyPlaceholderConfigurer" > <! - - 对于读取一个配置文件采取的方案- > < プロパティ名= "場所" 値= "クラスパス:cfg.properties" > </ プロパティ> <!- 撮影した2つの以上のプロファイルを読み込むための処理プログラム- > <! - <プロパティ名= "位置"> <リスト> <値>クラスパス:cfg.properties </値> <値>クラスパス:cfg2.properties </ value>の </リスト> </ property>の - > </ 豆> </ 豆>
// 测试代码 @RunWith(。SpringJUnit4ClassRunner クラス) @ContextConfiguration( "クラスパス:applicationCtx.xml" ) パブリック クラスSpringCtxTst { @value( "$ {ユーザー名}" ) プライベート文字列のuname。 @value( "$ {パスワード}" ) プライベート文字列のPWD; @Test 公共 ボイド試験(){ System.out.printlnは( "ユーザー名:" + のuname)。 System.out.println( "パスワード:" + PWD)。 } }
コンソール出力
ユーザ名:ジェイの
パスワード: 123
もちろん、この目的の春のためにも、別のソリューションを提供してくれ、私たちはSpring構成ファイルに直接次のコードを記述を達成することができます
< 豆のxmlns = "http://www.springframework.org/schema/beans" のxmlns:XSI = "http://www.w3.org/2001/XMLSchema-instance" のxmlns:コンテキスト= "のhttp:// WWW .springframework.org /スキーマ/コンテキスト" のxsi:schemaLocationの=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd のhttp:// www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd」> <! - 采用这种方式简化配置文件- > < コンテキスト:プロパティ-placeholder 位置= "クラスパス:cfg.properties、クラスパス:cfg2.properties" /> </ 豆>
重要な注意
PropertyPlaceholderConfigurerまたは文脈によって使用するかどうかを私たちは知っている、:プロパティ・プレースホルダーがこの方法で達成することが、私たちは、Springフレームワークを覚えておく必要がありますが、キーと値のペアの私達のプロフィールを読んで、だけでなく、JVMを読むだけでなく、システムに関する初期化情報。時々 、私たちは、次のような命名規則のキー与えられたセットを設定する必要があります
プロジェクト名グループ名機能名= 設定値
org.team.tfunction = 0001
システム構成情報との競合を最小限に抑えるために、この方法!
同時に、我々はまた、設定するには、以下のこの構成を使用することができ、ここで私は、システム構成情報を読んだことがないとない意味します。もし
< コンテキスト:プロパティプレースホルダ位置=「クラスパス:cfg.properties、クラスパス:cfg2.properties」システム・プロパティ・モード=「NEVER」/>