如何在春天两次创建单身豆?

时间:2017-01-19 10:35:54

标签: java spring singleton

我最近访问了intrview,并被问到如何强制spring创建单例bean几次。

正如我所理解的那样,如果你有几个背景但我不了解机制是可能的。

请为我解释一下。

github示例会很好。

3 个答案:

答案 0 :(得分:2)

您可以通过使用不同的@Qualifier

多次声明bean来注入多个实例
@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;
}