簡體   English   中英

從另一個標注為Bean的方法中調用Bean方法

[英]Calling a bean method from another method annotated as Bean

我有兩個用@Bean注釋的方法。 我正在從另一個調用一個@Bean注釋方法。 這是否意味着它會創建兩個相同類型的bean?

這是我的代碼:

@Configuration
@Import({BaseConfig.class})
public class TestConfig{

    @Autowired
    BaseConfig baseconfig;
    @Bean
    @Scope(BeanDefinition.SCOPE_PROTOTYPE)
    public SampleTestClass sampleTest() {
        return new SampleTestClass(baseconfig.createNewBean());
    }

}

@Configuration
@Import(SomeClassConfig.class)
public class BaseConfig {

    @Autowired
    private int someAttribute;

    @Bean
    public SampleTest createNewBean() {
        return new SampleTest(someAttribute);
    }
}

不,不會。

SampleTest具有默認的singleton作用域,因此,即使您直接調用方法,Spring也會確保每個容器只有一個實例。

不,不是。 Spring在運行時自動代理@Configuration類,並修飾@Bean方法以提供正確的作用域行為。

但是,在您的情況下,不要不必要地糾纏這兩種配置會更清潔。 相反,您可以這樣做:

@Bean
@Scope(BeanDefinition.SCOPE_PROTOTYPE)
public SampleTestClass sampleTest(SampleTest dependency) {
    return new SampleTestClass(dependency);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM