コードにアクセスできない外部ライブラリを使用するSpring MVCがあります。この外部ライブラリは、標準の system.getProperty 呼び出しを使用していくつかのプロパティを読み取ります。サービスを使用する前に、これらの値を設定する必要があります。
私のアプリケーションは Spring MVC アプリケーションであるため、これらのプロパティを初期化する方法がわかりません。これが私がこれまで行ってきたことですが、何らかの理由で値が常にnullです。
プロパティをプロパティファイルに入れます/conf/config.properties
my.user=myuser
my.password=mypassowrd
my.connection=(DESCRIPTION=(LOAD_BALANCE=on)(ADDRESS=(PROTOCOL=TCP)(HOST=xxxx.xxxx.xxxx)(PORT=1521))(ADDRESS=(PROTOCOL=TCP)(HOST=xxx.xxx.xxx)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=myService)))
次に、次の2行を追加しましたapplicationContext.xml
<context:annotation-config/>
<context:property-placeholder location="classpath*:conf/config.properties"/>
初期化コードをセットアップするには、InitializingBean インターフェイスを実装できるというドキュメントを読んだので、インターフェイスを実装し、afterPropertiesSet() メソッドを実装しました。
private static @Value("${my.user}") String username;
private static @Value("${my.password}") String password;
private static @Value("${my.connection}") String connectionString;
@Override
public void afterPropertiesSet() throws Exception {
System.setProperty("username",username);
System.setProperty("password",password);
System.setProperty("connectionString",connectionString);
}
afterPropertiesSet()
問題は、メソッドが呼び出されたときに値が常に null になることです。
- 上記のアプローチは、特にコントローラーのコードを初期化する正しい方法ですか? コントローラーに対して 2 回目の呼び出しが行われるとどうなりますか?
- 初期化のため、値は null ですか? つまり、春はまだそれらを設定していませんか?
- コントローラーから離れた場所に初期化コードを追加することは可能ですか?