繁体   English   中英

如何使用Spring Java配置注入几个bean?

[英]How to inject several beans with Spring Java config?

给定spring java-config并带有返回bean列表的方法:

@Configuration
public class Config {

    @Bean(name = "resultConsumers")
    public List<Consumer> getConsumers() {
        return Arrays.asList(...);
    }
}

如何将其注入另一个bean?

class Bean {

   @Inject
   what?
}

PS它没有列出使用不同实现的使用者,它们都是同一类的实例。

当使用@Autowired注释Collection类型时,Spring不会寻找该类型的对应bean。 而是查找Collection打算存储的组件类型。

而是使用@Resource和Bean名称。

@Resource(name ="resultConsumers")
private List<Consumer> consumers;

您不应将@Bean创建为列表。 只需将所有Consumer对象添加为单个bean。 将字段自动连接为“消费者列表”,Spring会找到您的所有消费者Bean并为您创建列表...

@Configuration
public class Config {

    @Bean
    public Consumer consumer1() {
        return new Consumer();
    }

    @Bean
    public Consumer consumer2() {
        return new Consumer();
    }
}
...
class Bean {

    //  Contains consumer1 and consumer2
    @Inject
    private List<Consumer> consumers;
 }
    @Configuration
public class Config {

    @Bean
    public List<Consumer> getConsumers() {
        return Arrays.asList(...);
    }
}

注射是这样的

    class InjectionPoint{

   @Autowred
   private Consumer [] consumerList;
}

就这样。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM