【发布时间】:2023-03-03 08:21:23
【问题描述】:
如果我们有
1- 一个案例场景,我们将 A 类配置为单例,将子类 B 作为 A 类中的成员,配置为原型。
2- 另一种情况,与第一种情况相反,我们将 A 类定义为原型,将 B 类定义为单例。
当请求 A 类和 B 类时,Spring 容器将如何初始化和处理这两种情况?
【问题讨论】:
标签: spring javabeans ioc-container
如果我们有
1- 一个案例场景,我们将 A 类配置为单例,将子类 B 作为 A 类中的成员,配置为原型。
2- 另一种情况,与第一种情况相反,我们将 A 类定义为原型,将 B 类定义为单例。
当请求 A 类和 B 类时,Spring 容器将如何初始化和处理这两种情况?
【问题讨论】:
标签: spring javabeans ioc-container
请看一下这个答案 - Spring session-scoped beans as dependencies in prototype beans?
您始终可以将范围更广的 bean(例如单例)注入到 范围更窄的 bean(例如,会话范围的 bean),但对它来说 反过来,你需要一个作用域代理。
这适用于您的问题。
您将更窄范围的 bean 注入到更宽范围的 bean 中。 (原型比单例窄)。它应该适合你。
您正在尝试将范围更广的 bean 注入到更窄范围的 bean 中。您需要使用范围代理。
【讨论】: