Java 带util:list的Spring autowire按类型

Java 带util:list的Spring autowire按类型,java,spring,spring-mvc,spring-bean,Java,Spring,Spring Mvc,Spring Bean,我正在学习spring(以及接下来的spring),因为我在四处玩耍,了解很少的概念;然后我观察到以下行为 场景: 我想通过使用“byType”autowire选项在类中自动关联列表属性。所以我创建了util:list bean;成功地注射了。。。因此,这并不奇怪:) 然后我在同一个类中添加了一个新的list属性(属于不同的类层次结构:off-course);然后也可以在不进行任何额外布线的情况下进行注射O 有人能解释引擎盖下发生了什么吗 下面是一些代码片段 public interfa

我正在学习spring(以及接下来的spring),因为我在四处玩耍,了解很少的概念;然后我观察到以下行为

场景:
我想通过使用“byType”autowire选项在类中自动关联列表属性。所以我创建了util:list bean;成功地注射了。。。因此,这并不奇怪:)
然后我在同一个类中添加了一个新的list属性(属于不同的类层次结构:off-course);然后也可以在不进行任何额外布线的情况下进行注射O

有人能解释引擎盖下发生了什么吗
下面是一些代码片段

   public interface Performer {
    public void perform();
}

public interface Instrument {
    public void play();
}


public class Show implements Audotorium {
    Logger logger = Logger.getLogger(Show.class.getName());

    List<Performer> performerList;
    List<Instrument> instruments;

    public void setPerformerList(List<Performer> performerList) {
        this.performerList = performerList;
    }

    public void setInstruments(List<Instrument> instruments) {
        this.instruments = instruments;
    }

    public void show() {
        Iterator<Performer> performerItr = performerList.iterator();
        while (performerItr.hasNext()) {
            performerItr.next().perform();
        }

        Iterator<Instrument> instrumentItr = instruments.iterator();
        while (instrumentItr.hasNext()) {
            instrumentItr.next().play();
        }
    }
}
Bean配置:

  public static void main(String[] args) {
        ApplicationContext context = new ClassPathXmlApplicationContext("/META-INF/spring-context.xml");
        ((Show) context.getBean("show")).show();
    }

带有

 <util:list id="performerList"/>

如果您创建了一个空列表,它将不被使用,您可以将其删除

您有一个类型为“OneManBand”的bean

当spring尝试自动连线
setPerformerList
时,它会自动创建一个类型为
list
的列表,并将其用作参数。Spring将类型为
Performer
的所有bean放入该列表

以相同的方式创建并注入
仪器的列表


这是spring的一个非常方便的功能,我经常使用它来构建注册表,以收集特定类型的所有bean并对其进行操作。

谢谢您的回答,