2016-06-20 45 views
1

我從來沒有見過一個自動裝配Autowired集合:確實Spring框架如何自動裝配集合

@Service 
public class SomeFactory { 
    @Autowired 
    private List<Foo> foos; 

    @PostConstruct 
    public void init() { 
     for(Foo foo: foos) { 
      //do something 
     } 
    } 
} 

在init()方法,我可以看到FOOS有幾個項目已經。我猜Spring知道誰應該是foos的入口。但是,如何?如果我想將Foo對象添加到foos中,我該怎麼做?需要在屬性文件或其他想法中進行配置?

回答

1

Spring的BeanFactory基本上是一個bean的註冊表。這些bean可以使用XML聲明,或者在Configuration類中使用@Bean -annotated方法,或者使用包掃描自動發現。

當你詢問List<Foo>時,Spring查找所有類型爲Foo的bean,創建一個包含這些bean的List,並注入該列表。

documentation about Autowired解釋它,順便說一句:

另外,也可以通過添加註釋到期望類型的數組的字段或方法,以提供從ApplicationContext的一個特定類型的所有豆