Java 将bean附加到自动连接的列表中

Java 将bean附加到自动连接的列表中,java,spring,Java,Spring,我有一个通过自动连线创建的动物列表 public class UserManagerConfig { @Bean public Dog getDog(){ return new Dog("Lucky"); } @Bean Cat getCat(){ return new Cat("Charles"); } } public class Zoo { @Autowired private List<A

我有一个通过自动连线创建的动物列表

public class UserManagerConfig {
    @Bean
    public Dog getDog(){
        return new Dog("Lucky");
    }

    @Bean Cat getCat(){
        return new Cat("Charles");
    }
}

public class Zoo {

    @Autowired
    private List<Animal> animals;
}
public类UserManagerConfig{
@豆子
公犬{
归还新狗(“幸运”);
}
@豆猫{
归还新猫(“查尔斯”);
}
}
公立动物园{
@自动连线
私人动物名录;
}
我想添加一个getDogs(),将更多的狗添加到自动连线列表中:

    @Bean
    public List<Animal> getDogs(){
        return new ArrayList<>(Arrays.asList(new Dog("Ray"), new Dog("Soos")));
    }
@Bean
公开名单{
返回新的ArrayList(Arrays.asList(newdog(“Ray”)、newdog(“Soos”));
}
但是Spring在自动连接时并没有选择getDogs(),它会生成一个在getDogs()之前配置的bean列表(返回动物而不是列表)


有没有办法告诉spring添加此列表?

我能够让spring使用
getDogs()
,方法是将列表自动连接到getDogs,如下所示:

public class UserManagerConfig {
    @Bean
    public Dog getDog(){
        return new Dog("Lucky");
    }

    @Bean Cat getCat(){
        return new Cat("Charles");
    }

    @Bean
    public List<Animal> getDogs(List<Animal> animals){
        animals.addAll(new ArrayList<>(Arrays.asList(new Dog("ray"), new Dog("soos"))));
        return animals;
    }
}

有更好的解决方案吗?

您需要按名称自动布线。请参阅提议的副本。这是否回答了您的问题?不是真的…我可以用限定符做一个黑客,但我想知道是否有更好的方法。这不是黑客。如果上下文中存在两个相同类型的bean,如果要使用@Autowire注释,则必须按名称选择它。确定。。如果我想自动连接所有动物(组件)的实现,并添加getDogs来创建更多的狗并将它们添加到所有组件中,该怎么办。我将不得不使用我在下面陈述的答案。。你认为这是最好的解决办法吗?
public class Zoo {

    @Autowired
    @Qualifier("getDogs")
    private List<Animal> animals;
}