1

working-dir="file:${user.home}/some-directory".properties ファイル内で次のようなことができますか? user.homeResourceBundle を使用して .properties ファイルから構成をロードしていますが、自分のプロパティなどのシステム プロパティ キーを継承したいと考えていworking-dirます。ソース パッケージとテスト パッケージのリソース ディレクトリに異なるバージョンの .properties をそれぞれ持つことができるので、これができると便利です。working-dir本番環境とテスト環境で異なる値を定義したいと考えています。

4

2 に答える 2

1

これを直接行うことはできませんが、コード内のプロパティを解析し、プログラムで変数を展開できます。

  • ${varname}プロパティでパターンを検索する
  • varnameシステム プロパティからの値を取得する
  • ${varname}システムプロパティの値に置き換えますvarname

上記の簡単な実装を次に示します。

String property = "file:${user.home}/some-directory";

StringBuffer sb = new StringBuffer();
Pattern pattern = Pattern.compile("\\$\\{(.+)\\}");
Matcher matcher = pattern.matcher(property);
while (matcher.find())
{
    String key = matcher.group(1);
    String val = System.getProperty(key);
    if (val != null)
    {
        matcher.appendReplacement(sb, Matcher.quoteReplacement(val));
    }
}
matcher.appendTail(sb);
System.out.println(sb.toString());
于 2010-10-20T08:25:56.530 に答える
0

Apacheコモンズ構成変数補間を試したところ、完璧に機能します。

于 2010-10-20T10:43:45.240 に答える