0

次の「問題」があります。spring.net のアプリケーション コンテキスト ファイルを作成しました。構成は次のようになります。

<spring>
    <context>
        <resource uri="config://spring/objects"/>
    </context>
    <objects configSource="SpringObjects.config" />
</spring>

アプリケーション コンテキストに何か変更を加えた場合、変更を確認するためにアプリケーションを再コンパイルする必要はないと言われました。

構成ファイルに何かを変更した場合はどうなりますか。変化は見られません。表示されるのはまだ元のデータです。

次のようにアプリケーション コンテキストを呼び出します。

IApplicationContext ctx = ContextRegistry.GetContext();
    ManagementConfigurator configurator = (ManagementConfigurator)ctx.GetObject("ManagementConfigurator");

変更が表示されるまでに時間がかかる場合があります (アプリを再コンパイルした後でも)。

編集: アプリケーション プールを再起動する必要があることがわかりました。それでは、質問を言い換えます。「アプリケーション内でアプリケーション コンテキストをリロードできますか?」アプリケーション プールを再起動する必要はありません。

4

1 に答える 1

2

アプリケーション プールを再起動する必要はありません。実行中のコードに関連する AppDomain を再利用する必要があります。これがオプションであるかどうかはわかりませんが、Spring オブジェクトを別のファイルではなく web.config ファイル内に配置し、web.config ファイルを変更した場合 (たとえば、内部の spring 構成を変更することによって) it)、関連付けられている AppDomain はリサイクルされます。これは、アプリケーションが再び再構成されることも意味します。SpringObjects.config ファイルを変更して、その後 web.config を「タッチ」することもできます。(SpringObjects.config を bin ディレクトリに配置するのが適切かどうかはわかりませんが、bin ディレクトリを変更すると AppDomain のリサイクルも発生します)

ContextRegistry メソッド (Clear、次に RegisterContext) をプログラムで使用して、ApplicationContext をリロードすることもできますが、お勧めしません。

于 2009-01-09T19:21:17.327 に答える