自动装配bean单独实例化并作为列表实例化

时间:2017-04-26 09:03:28

标签: spring

我在@Configuration

中将bean实例化如下
@Bean
public Queue queue1() {
  return new Queue("queue1");
}

@Bean
public Queue queue2() {
  return new Queue("queue2");
}

@Bean
public List<Queue> queues(List<String> names) {
  List<Queue> ret = new LinkedList<>();
  for (String name : names) {
    ret.add(new Queue(name));
  }
  return ret;
}

当我@Autowire他们喜欢下面

@Autowired
private Collection<Queue> queues;

@Autowired
private List<Queue> queues;

我希望得到所有(都是单独实例化的和 它们的列表但我只能单独实例化。

你能告诉我吗?

注意:

如果我使用@Qualifier,我可以让列表自动装配但只有那些。我正在寻找一种自动装配它们的方法。

1 个答案:

答案 0 :(得分:0)

最后,我设法使用PostConstruct获得了我需要的东西:

@Autowired
private QueueNames queueNames;

@Autowired
private ConfigurableBeanFactory beanFactory;

@PostConstruct
public void queues() {
  for (String name : queueNames.get()) {
    beanFactory.registerSingleton(name, new Queue(name));
  }
}