从另一个注释为Bean的方法调用bean方法

时间:2016-05-23 19:11:59

标签: java spring

我有两个用@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);
    }
}

2 个答案:

答案 0 :(得分:0)

不,它不会。

SampleTest具有默认的singleton范围,因此即使您“直接”调用该方法,Spring也会确保每个容器只有一个实例。

答案 1 :(得分:0)

不,它没有。 Spring在运行时自动代理clazz.newInstance()类,并修饰@Configuration方法以提供正确的范围行为。

但是,在您的情况下,不要不必要地纠缠这两种配置会更干净。相反,你可以这样做:

@Bean