Java 带util:list的Spring autowire按类型
我正在学习spring(以及接下来的spring),因为我在四处玩耍,了解很少的概念;然后我观察到以下行为 场景: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
我想通过使用“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并对其进行操作。谢谢您的回答,