プロジェクトのグローバル構成(spring propertiesプロファイルを読み込む)
今日はプロジェクトをする時、プロジェクトのグローバルプロファイルconfig.propertiesを使いました。この記録の下でspringのこのような読取propertiesファイルの方式を使って、後で調べるのが便利です。
1.属性ファイルのconfog.propertiesを変更する
2.springのプロファイルを修正する
3.グローバルプロファイルを読み出すクラス
私のプロジェクトでは注解に基づいていますので、このクラスはspring注解スキャンの設定を要求します。
4.使用例
ファイルアップロード時にアップロードパスを設定します。コードは以下の通りです
1.属性ファイルのconfog.propertiesを変更する
#path of upload
pfo.fileupload.server.path=/aaa/bbb
(1)【.properties】ファイルの内容はすべてキーペアの形式であり、プロジェクトの中にデータベース接続情報のような常に修正される値を保存して、配置ファイルを作成すればいいです。配置が変更される時、ファイルだけを修正してソースコードを修正しないようにします。(2)上の配置はプロジェクト読取ファイルの経路です。例えば、私のドメイン名はaaa
です。ファイルパスはaaa/file/filepath
です。2.springのプロファイルを修正する
タグの下にbeanを追加します。コードは以下の通りです。
<bean id="configProperties" class="org.springframework.beans.factory.config.PropertiesFactoryBean">
<property name="location" value="classpath:config.properties" />
bean>
(1)【classipath:】この構成は、指定された名前をウェブコンテナにロードするように指示するプロファイルを示す。摘録:classipathとclassipath*の違い(2)構成ではIDが(WEB-INF/classes WEB-INF/lib)
と定義されており、idは後述する。3.グローバルプロファイルを読み出すクラス
configProperties
を変更する(新規作成可能でない場合)私のプロジェクトでは注解に基づいていますので、このクラスはspring注解スキャンの設定を要求します。
<context:component-scan base-package="xxx.yyy" />
OperatParam
のコード/**
*
* @ClassName: OperatParam
* @Description: key value[config.properties]
*/
@Component
public class OperatParam {
private Map configMap;
@Resource
private Properties configProperties;// spring bean, config.properties
@PostConstruct
private void init() {
this.configMap = new HashMap();
Set> keys = this.configProperties.keySet();
for (Iterator> localIterator = keys.iterator(); localIterator.hasNext();) {
Object key = localIterator.next();
this.configMap.put(key.toString(), this.configProperties.getProperty(key.toString()));
}
}
public String get(String key) {
return (String) this.configMap.get(key);
}
}
@Component:普通のクラスをspring容器に注入すると@Controller、@Service、@repositoryと区別できます。【@Resource】:名前による依存注入が実現され、ここのOperatParam
属性は第1のポイントに配置されたidである。@PostConstruct:メソッドにこの注釈を加えると、プロジェクトが起動した時にこの方法を実行し、spring容器の初期化時にこの方法を実行すると理解できる。【init()】この方法を呼び出してプロファイルの内容を読み取るのはmapにあります。【get】特定の属性値を取得するために、プロジェクト内でこの方法を呼び出します。4.使用例
ファイルアップロード時にアップロードパスを設定します。コードは以下の通りです
【FileUpload.java】
@Resource
private OperatParam operatParam;// OperatParam
if(isLocal) {
dir = System.getProperty("webapp.root")+"upload";
} else {
//dir = "/aaa/bbb";
dir = operatParam.get("pfo.fileupload.server.path");// get(String key)
}
以上は私のプロジェクトの中で使う方式です。もし正しくないところがあれば、或いは最適化できるところがあれば、ご指摘ください。