2

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

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

4

2 回答 2

1

我可以为您提供一种解决方法,尽管它并不完美,但它可能应该是一个不错的估计。

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

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

于 2008-10-29T22:13:08.917 回答
1

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

您应该通过实现 IObjectFactoryPostProcessor 来获得您想要的。ObjectFactoryPostProcessors 是最先被实例化的对象。此时对象定义的数量已经可用。使用 IObjectPostProcessor 可为您提供有关正在实例化的每个对象的信息。

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

hth,埃里希

于 2009-01-04T15:33:13.880 回答