我最近访问了intrview,并被问到如何强制spring创建单例bean几次。
正如我所理解的那样,如果你有几个背景但我不了解机制是可能的。
请为我解释一下。
github示例会很好。
答案 0 :(得分:2)
您可以通过使用不同的@Qualifier
:
@Configuration
public class YourConfiguration {
@Bean
@Qualifier("first")
public Model firstInstance() {
return new Model();
}
@Bean
@Qualifier("second")
public Model secondInstance(){
return new Model();
}
}
...
@Autowired
@Qualifier("first")
private Model first;
@Autowired
@Qualifier("second")
private Model second;
答案 1 :(得分:0)
有多种方法可以拥有相同单例bean的多个副本,但是您必须为Spring提供一种区分它们的方法。恕我直言,最简单的方法是完全配置父bean,然后使用parent属性声明它的副本。
这实际上是用于拥有几个具有相同类和几乎相同配置的bean,每个bean都专门用于例如属性的差异。您只能按名称区分它们,实际上必须按名称注入它们。
答案 2 :(得分:0)
您可以使用@Qualifier为您的单例作用域的bean命名一个不同的名称,然后简单地自动连接它们。
@Component
@Qualifier(value ="first, second")
public class Scope {
}
@Component
public class MyClass {
@Autowired
private Scope first;
@Autowired
private Scope second;
}