我有两个用@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);
}
}
答案 0 :(得分:0)
不,它不会。
SampleTest
具有默认的singleton
范围,因此即使您“直接”调用该方法,Spring也会确保每个容器只有一个实例。
答案 1 :(得分:0)
不,它没有。 Spring在运行时自动代理clazz.newInstance()
类,并修饰@Configuration
方法以提供正确的范围行为。
但是,在您的情况下,不要不必要地纠缠这两种配置会更干净。相反,你可以这样做:
@Bean