簡體   English   中英

帶有@Bean 注釋的方法行為的@Order

[英]@Order with @Bean annotated method behaviour

我的配置類:

@Bean(name = "model")
@Order(1)
public Model model1(){
    return new Model(1);
}

@Bean(name = "model")
@Order(2)
public Model model2(){
    return new Model(2);
}

如我們所見,這兩個方法創建了一個同名的Bean,我使用了@Order()注釋來優先考慮其中一個Bean。

不幸的是,即使我更改 Order 的值以在兩個帶注釋的 Bean 之間進行更改,下面的代碼中也僅使用了第一個 Bean

 Model bean = (Model) applicationContext.getBean("model");
 System.out.println("bean.getId() "+bean.getId());

bean.getId() 1

我們在上下文中有兩個 bean 嗎? 如果我們只有一個,會選擇兩者中的哪一個,為什么?

我知道我可以使用不同的名稱來區分 bean,但我願意了解@Order注釋如何與@Bean並行@Bean

在 Spring 4 之后,您可以獲得按優先級排序的 Bean 列表

@Autowired
private List<Model> models;

在你的方法中按索引獲取

 models.get(0).getModel();

從 Spring 4.0 開始,它支持將注入的組件排序到集合中。 因此,Spring 將根據它們的 order 值注入相同類型的自動連接的 bean。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM