[英]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.