0

ちょっとした質問です。Spring 3.1 を使用しており、値の区切り記号 (デフォルト値) に問題があるようです。

<context:property-placeholder ignore-resource-not-found="false" ignore-unresolvable="false" location="${app-conf-base-path:classpath:}environment/app-conf-${spring.profiles.active:test}.properties" />

Maven 環境プロファイルに基づいて、デプロイされるプロパティをフィルタリングします。Maven 環境プロファイルが指定されていない場合、すべての環境プロパティ ファイルが war にロードされ、クラスパスに配置されます。実際の環境固有の設定は、Spring プロファイルを使用して実行時に読み込まれます。ただし、問題を引き起こしているのは ${app-conf-base-path:classpath:} です。彼はこれを解決できないようです。これは、プレースホルダーがデフォルト値セパレーターの最後の出現を使用して分割されているためだと思います。これが必要な理由は、JVM パラメータとして定義されていない限り、app-conf-base-path を見てもらいたいからです。その場合、彼はクラスパスを調べる必要があります。

私は試した:

  • 値のセパレーター == '?' を使用したプレースホルダー コンフィギュアラー 役に立たない。

代替案を思いついた人はいますか?

4

1 に答える 1

0

クラスローダーをロードするときに、サーバーのクラスパスに外部構成ファイルが追加されるようにすることで、問題を解決しました。この方法では、file:// タイプの場所を指すプレースホルダーは必要ありません。環境変数 CLASSPATH に外部ファイルを追加するために、tomcat の setclasspath.sh に export 行を追加しました。

于 2012-11-14T21:24:52.627 に答える