Spring.Net IoC应用程序上下文

时间:2009-01-09 10:11:56

标签: c# .net inversion-of-control spring.net

我遇到了以下“问题”。 我为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");

有时需要一段时间才能看到更改(即使重新编译应用程序后)。

编辑: 我刚刚发现你必须重启你的应用程序池。 我只是重新解释我的问题:“你可以在应用程序中重新加载应用程序上下文吗?” 无需重新启动应用程序池。

1 个答案:

答案 0 :(得分:2)

不必重新启动应用程序池,必须回收与执行代码相关的AppDomain。我不知道这是否适合您,但如果您将spring对象放在web.config文件而不是单独的文件中,并且您更改了web.config文件(例如更改内部的弹簧配置)它),相关的AppDomain将被回收,这也意味着您的应用程序将再次重新配置。您也可以只更改SpringObjects.config文件并在此之后“触摸”web.config。 (我不确定是否将SpringObjects.config放在bin目录中是一个好主意,但是对bin目录的更改也会导致AppDomain回收)

您可以通过编程方式使用ContextRegistry方法(Clear,然后是RegisterContext)来重新加载ApplicationContext,但我不推荐它。