Spring Context的Progressbar?

时间:2008-10-13 17:28:38

标签: c# spring spring.net

我想创建一个带有进度条的窗口,该窗口显示Spring对象实例化的当前状态。从Spring.Net的documentation开始,似乎IObjectPostProcessors是在对象被实例化时开始和跟踪的正确点。但是为了获得“实例化类的百分比”,我需要询问spring工厂的ObjectDefinitionCount来获取已配置对象的数量。但是,在上下文创建完成之前这不起作用(同样this problem问题似乎也有关系。)

如果无法使用Spring获取启动状态,那么在应用程序启动期间如何显示信息?

2 个答案:

答案 0 :(得分:1)

我可以为您提供一种解决方法,虽然它并不完美但它应该是一个很好的估计。

  • 您使用持久存储机制(属性文件,db,等等)来跟踪创建的bean的数量。
  • 您使用IObjectPostProcessors更新初始化计数
  • 在第一次运行时,显然值为0
  • 在后续运行中,您使用最后一次计数估算要完成的初始化次数。

当然,这不准确,但它应该在大多数时候提供一个很好的估计。

答案 1 :(得分:1)

Spring以两个步骤读取配置 - 首先从配置中读取所有对象定义,然后处理这些定义,必要时实例化单例。

您应该通过实现IObjectFactoryPostProcessor来获得所需的内容。 ObjectFactoryPostProcessors是第一个在其他任何东西之前实例化的对象。此时,对象定义的数量已经可用。使用IObjectPostProcessor为您提供有关要实例化的每个对象的信息。

如果您在加载配置时已经获得了对象定义的数量,我想这是可能的,但Spring会在一次通过中读取配置。您需要使用不同的技术获取对象总数。

HTH, 埃里希