2009-01-09 71 views
0

我有以下“问题”。 我为spring.net创建了一个应用程序上下文文件。 的配置是这样的:Spring.Net IoC应用上下文

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

有人告诉我,如果你想改变什么,以应用程序上下文,你不需要重新编译应用程序看到的变化。

如果我改变一些东西到配置文件。没有看到变化。它仍然是可见的原始数据。

我这样调用应用程序上下文:

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

有时需要一段时间的变化是可见的(甚至重新编译应用程序后)。

编辑: 我刚发现你必须重新启动你的应用程序池。 我只会重新修改我的问题,然后:“你可以在应用程序中重新加载应用程序上下文吗?” 而不必重新启动应用程序池。

回答

2

应用程序池不必重新启动,与执行代码相关的AppDomain必须被回收。我不知道这是否是您的选择,但如果您将弹簧对象放在web.config文件中而不是单独的文件中,并且您更改了web.config文件(例如通过更改弹簧配置它),相关的AppDomain将被回收,这也意味着您的应用程序会被重新配置。你也可以改变你的SpringObjects.config文件,然后'触摸'web.config。 (我不确定是否将SpringObjects.config放入bin目录是一个好主意,但是对bin目录的更改也会导致AppDomain重复使用)

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