2

Spring のオブジェクトのインスタンス化の現在のステータスを示すプログレスバーを含むウィンドウを作成したいと思います。Spring.Net のドキュメントIObjectPostProcessorsから、オブジェクトがインスタンス化されたときはいつでも開始して追跡するのが適切なポイントのようです。 ただし、「インスタンス化されたクラスの割合」を取得するにはObjectDefinitionCount、Spring のファクトリに構成済みオブジェクトの数を取得するよう依頼する必要があります。ただし、これはコンテキストの作成が完了するまで機能しません (この問題の 問題も関連しているようです)。

Spring を使用して起動ステータスを取得できない場合、アプリケーションの起動中にどのようにユーザーに情報を表示しますか?

4

2 に答える 2

1

回避策を提供できますが、完全ではありませんが、おそらく適切な見積もりになるはずです。

  • 永続ストレージメカニズム(プロパティファイル、dbなど)を使用して、作成されたBeanの数を追跡します。
  • IObjectPostProcessorsを使用して、初期化の数を更新します
  • 最初の実行では、明らかに値は0になります
  • 以降の実行では、最後のカウントを使用して、実行される初期化の数を見積もります。

もちろん、これは正確ではありませんが、ほとんどの場合、適切な見積もりを提供するはずです。

于 2008-10-29T22:13:08.917 に答える
1

Spring は 2 つのステップで構成を読み取ります。最初にすべてのオブジェクト定義が構成から読み取られ、次にそれらの定義が処理され、必要に応じてシングルトンがインスタンス化されます。

IObjectFactoryPostProcessor を実装することで、必要なものを取得する必要があります。ObjectFactoryPostProcessors は、何よりも先にインスタンス化される最初のオブジェクトです。この時点で、オブジェクト定義の数はすでに利用可能です。IObjectPostProcessor を使用すると、インスタンス化される各オブジェクトに関する情報が得られます。

構成がロードされた時点ですでにオブジェクト定義の数を取得している場合は、可能だと思いますが、Spring は単一のパスで構成を読み取ります。別の手法を使用してオブジェクトの総数を取得する必要があります。

hth、エーリッヒ

于 2009-01-04T15:33:13.880 に答える