我来自 Java 和 Spring 的背景,而且我对 Castle Windsor 还很陌生。我已经读过,知道 Castle 何时释放瞬态组件很重要,因为它会跟踪所有创建的组件。不过,我很难理解我的组件何时发布。这是我的模型的基础知识:
Singleton -> Singleton Typed Factory -> Transient Objects
如果我释放这个链中的第一个单例,那么类型化工厂创建的所有瞬态对象都会被释放吗?我可以进行任何 API 调用来检查是否是这种情况?我在 Castle Windsor 网站上找不到任何全面的 API 文档。我确实找到的文档对我来说似乎并不清楚。
编辑: 我的问题归结为两个主要问题。
- 如果我有一个依赖于单例类型工厂 (B) 的单例对象 (A),并且我释放单例 A 是否会真正释放 B?下面的答案中提到的博客文章说,对单例对象的释放调用被忽略,所以我的假设是不,它不会被释放。
- 如果我有一个单例类型的工厂,多个 Web 请求同时使用它来创建瞬态对象并由其中一个 Web 请求释放,那么所有瞬态对象是否都会被释放,无论它们是否是从该 Web 请求创建的?似乎根据 Web 请求或短暂的生活方式制作类型工厂会更好。