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