那些依赖于其他bean的Spring bean默认会获得这些bean的单例版本吗?

时间:2016-12-14 15:23:36

标签: java spring spring-boot

我是使用Spring-Framework的新手,我实际上使用的是spring-boot库。我有以下问题:

我知道在@Configuration类中使用@Bean注册的bean默认是单例,但是我发现依赖于其他bean的bean正在获取这些bean的实例,而不是我希望它们的单例实例有

例如:


    @Bean
    public static void myFirstService() {
        return new MyFirstService(foo(), bar());
    }

    @Bean
    public static void mySecondService() {
        return new MySecondService(foo(), bar());
    }

    @Bean
    public static void foo() {
        return new Foo();
    }

    @Bean
    public static void bar() {
        return new Bar();
    }

我希望MyFirstService和MySecondService的实例具有相同的foo和bar实例。这是默认应该发生的事情,对吧?或者我是否完全误解了豆类的处理方式?

我玩@Scope注释(无济于事),但这是我的理解,我不应该这样做。

提前感谢任何输入! :)

2 个答案:

答案 0 :(得分:3)

我刚刚发布这个,我意识到了问题......(总是那样......)

我想出了答案。以防其他人犯同样的错误。我的IDE将方法更正为"静态",当然它们不应该是。

我已将这些方法更改为实例方法,一切都按预期工作。

答案 1 :(得分:1)

你应该在这里使用@Autowired如下:

@Autowired
private MyFirstService myFirstService;

@Autowired
private MySecondService mySecondService;

在MyFirstService和MySecondService的java类代码中,自动连接foo和bar。