簡體   English   中英

Spring Boot使用bean內部配置

[英]Spring boot use bean inside configuration

@Configuration
@AutoConfigureOrder()
@ComponentScan("scanPath")
public class AutoConfiguration {    

    @Autowired
    private Factory   factory;

    @Bean("factory")
    @ConditionalOnProperty(prefix = "application.middleware", name = "enabled", havingValue = "true")
    public Factory getFactory() {
        return new Factory();
    }

    @Bean("binding")
    @DependsOn("factory")
    public Binding getMarketingDataSource() {
        return factory.getInstance("bindingName");
    }
}    

我想:1.初始化bean工廠(如果找不到值,可以為null)2.自動綁定並由bean綁定使用

但是現在我得到了例外

Caused by: org.springframework.beans.factory.BeanCurrentlyInCreationException: Error creating bean with name 'factory': Requested bean is currently in creation: Is there an unresolvable circular reference?

所以我想要在綁定中使用工廠,如何制作? 謝謝!

使用getFactory()獲取Bean(並刪除@Autowired ):

public Binding getMarketingDataSource() {
    return getFactory().getInstance("bindingName");

將工廠連接到簽名中,現在Spring看到綁定需要工廠並為您設置它:

@Bean("binding")
public Binding getMarketingDataSource(Factory factory) {
  return factory.getInstance("bindingName");
}

暫無
暫無

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

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