首页 文章

依赖于其他bean的Spring bean默认情况下是否会获得这些bean的单例版本?

提问于
浏览
1

我是使用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实例 . 这是默认应该发生的事情,对吧?或者我是否完全误解了 beans 类的处理方式?

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

提前感谢任何输入! :)

2 回答

  • 3

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

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

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

  • 1

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

    @Autowired
    private MyFirstService myFirstService;
    
    @Autowired
    private MySecondService mySecondService;
    

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

相关问题