我遇到了以下“问题”。 我为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");
有时需要一段时间才能看到更改(即使重新编译应用程序后)。
编辑: 我刚刚发现你必须重启你的应用程序池。 我只是重新解释我的问题:“你可以在应用程序中重新加载应用程序上下文吗?” 无需重新启动应用程序池。
答案 0 :(得分:2)
不必重新启动应用程序池,必须回收与执行代码相关的AppDomain。我不知道这是否适合您,但如果您将spring对象放在web.config文件而不是单独的文件中,并且您更改了web.config文件(例如更改内部的弹簧配置)它),相关的AppDomain将被回收,这也意味着您的应用程序将再次重新配置。您也可以只更改SpringObjects.config文件并在此之后“触摸”web.config。 (我不确定是否将SpringObjects.config放在bin目录中是一个好主意,但是对bin目录的更改也会导致AppDomain回收)
您可以通过编程方式使用ContextRegistry方法(Clear,然后是RegisterContext)来重新加载ApplicationContext,但我不推荐它。