java - Spring Boot使用bean内部配置

标签 java spring spring-boot autowired

@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. Autowiring 并通过bean绑定(bind)使用

但现在我遇到了异常(exception)

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?

所以我想要的是在绑定(bind)中使用工厂,如何制作呢?谢谢!

最佳答案

使用getFactory()获取Bean(并删除@Autowired):

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

关于java - Spring Boot使用bean内部配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57757714/

相关文章:

java - OpenGL : glLoadMatrix & depth buffer

java - 如何使构造函数在 Autowiring 后调用?

java - Spring Boot中的抽象工厂模式@Service

java - 使用 Spring Boot Maven 着色无法正常工作

java - 在 hibernate 中执行唯一 ID 的最聪明方法

java - 隐藏结果集中的行

java - 在单个类中使用多个事务的正确方法

java - 如何从 ValueStack 中删除操作?

java - 使用 Java Config 和 Spring Boot 从数据库加载属性

java - 使用数字格式检查给定字符串是否是有效货币