如何从两个不同的 IOC 容器中解析单例实例 [关闭]

Posted

技术标签:

【中文标题】如何从两个不同的 IOC 容器中解析单例实例 [关闭]【英文标题】:How to resolve Singleton instance from two different IOC Containers [closed] 【发布时间】:2017-12-07 04:18:46 【问题描述】:

我是 IOC 新手,我正在构建一个使用 IOC 容器的应用程序,同时讨论我们决定的架构,每个模块将有两个程序集,一个用于所有模块级工作,不暴露在该模块之外,一个与公开访问我们想要公开的功能。

我的问题是我需要创建两个 IOC 容器,一个在 APP 级别,一个在模块级别,并且有一个单例实例,我想向两者注册,但是当我解决它们时,两个类的实例都在两者上创建有没有办法只获取一个实例。

一种方法是创建一个 Singleton 类并禁止生成另一个实例,但我认为会删除 IOC 的概念是否有任何其他方法可以仅在两个 IOC 容器之间解析单例实例。

谢谢

【问题讨论】:

【参考方案1】:

我是 IoC 的新手,前几天我才明白这个概念的必要性。但是,从您的情况来看,为什么不只依靠在一个容器中注册单例,而另一个从您注册的容器中解析。 这个解决方案是否也打破了 IoC 的概念?如果这不是您搜索的答案,我很抱歉。我正在学习。

【讨论】:

是的,这似乎是一个很好的解决方案,感谢您的建议。 不客气 :) 。如果您选择解决方案,请将其标记为已接受的答案,以便其他人可以使用相同的解决方案。

以上是关于如何从两个不同的 IOC 容器中解析单例实例 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

Spring IOC 容器源码分析 - 创建单例 bean 的过程

Spring IOC 容器源码分析 - 创建单例 bean 的过程

IOC容器

IOC的单例和多例

Spring中AOP源码

Spring中AOP源码