4

我来自 Java 和 Spring 的背景,而且我对 Castle Windsor 还很陌生。我已经读过,知道 Castle 何时释放瞬态组件很重要,因为它会跟踪所有创建的组件。不过,我很难理解我的组件何时发布。这是我的模型的基础知识:

Singleton -> Singleton Typed Factory -> Transient Objects

如果我释放这个链中的第一个单例,那么类型化工厂创建的所有瞬态对象都会被释放吗?我可以进行任何 API 调用来检查是否是这种情况?我在 Castle Windsor 网站上找不到任何全面的 API 文档。我确实找到的文档对我来说似乎并不清楚。

编辑: 我的问题归结为两个主要问题。

  1. 如果我有一个依赖于单例类型工厂 (B) 的单例对象 (A),并且我释放单例 A 是否会真正释放 B?下面的答案中提到的博客文章说,对单例对象的释放调用被忽略,所以我的假设是不,它不会被释放。
  2. 如果我有一个单例类型的工厂,多个 Web 请求同时使用它来创建瞬态对象并由其中一个 Web 请求释放,那么所有瞬态对象是否都会被释放,无论它们是否是从该 Web 请求创建的?似乎根据 Web 请求或短暂的生活方式制作类型工厂会更好。
4

1 回答 1

8

这是一篇详细的帖子,解释了 Windsor 如何跟踪对象以及何时需要调用 Release: http: //kozmic.pl/2010/08/27/must-i-release-everything-when-using-windsor/

更新您的更新

  1. 单例上的任何释放都会被忽略,所以,是的,你是对的——它不会被释放。

  2. 您只需要担心发布您专门解决的组件。如果它是由 Windsor 解决的(通过 Typed Factory Facility、子依赖解析器等),请不要担心。

于 2012-12-30T15:30:12.150 回答