Spring でオブジェクトを自動配線し、同じ自動配線オブジェクトを使用してメソッドを呼び出しています。NullPointerException がスローされます。問題は、メソッドを静的ブロック内で呼び出していることです。以下は私のコードです -
@Autowired
static MyPropertyManagerClass myPropertyManagerClass;
private static URL SERVICE_URL = null;
static {
try {
SERVICE_URL = myPropertyManagerClass.getServiceURL();
}
catch (Exception e) {
log.error("Exception Occurred While Invoking myPropertyManagerClass.getServiceURL() : " , e);
}
}
私が間違っていなければ、これは静的ブロックが最初にロードされるために発生します。新しいキーワードを使用してオブジェクトを作成せずにこれを機能させる方法はありますか?
ベストアンサー1
静的ブロッククラスがロードされた後、初期化されるときに呼び出されます。成分まだ初期化されていません。そのため、NullPointerException
(依存関係が null です) というメッセージが表示されます。
コードを で注釈されたメソッドに移動します@PostConstruct
。これにより、コンポーネントのすべての依存関係が初期化されたときにコードが実行されるようになります。