![](/img/trans.png)
[英]Spring behaviour if a java method is annotated with both @Bean and @PostConstruct
[英]@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.