0

使用している PostgreSQL データベースがまだ起動していない場合、アプリケーションを起動できません (2 つの間の遅延は約 2 分です)。これはかなり複雑な継承プロジェクトであり、構成をあまりいじることはできません。

私の考えは、Spring コンテナーで最初に実行される Bean を持つことです。@PostConstruct注釈 ( ) と xml ( )で構成しようとしまし<bean id="dbStartupMonitor" class="ee.package.monitoring.DBStartupMonitor" init-method="checkConnection" lazy-init="false" />たが、どちらの場合もcheckConnection()実行されていないようです (ログは表示されません)。さらに、この Bean が最初に作成されるようにするにはどうすればよいですか?

さて、 に関してはcheckConnection()、データベースが稼働しているかどうかを確認することが考えられます。そうでない場合は、しばらくスリープしてからもう一度試してください。これは、Spring MVC コンテナーの残りの初期化をブロックする必要がありますが、そのようには機能しないと確信しています。

このようにそれを解決することさえ可能ですか?

4

1 に答える 1

0

問題は、Bean の初期化の順序でした。データソース依存の Bean が最初に初期化されたので、Bean 構成 xml ファイルをかなり掘り下げた後depends-on、DB モニター Bean に属性を追加しました。これにより、モニターが最初に初期化されます。

また、初期化メソッド ( init-method) はブロックするため、「データベースが起動するまでチェック-スリープ-チェック」サイクルは正常に機能します。

于 2013-09-03T09:35:01.653 に答える