Java @带有@Bean注释的方法行为的订单
我的配置类:Java @带有@Bean注释的方法行为的订单,java,spring,autowired,spring-bean,Java,Spring,Autowired,Spring Bean,我的配置类: @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(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
并行工作,在Spring 4之后,您可以按优先级排序
@Autowired
private List<Model> models;
自Spring4.0以来,它支持将注入的组件排序到集合。因此,Spring将根据订单值注入相同类型的自动连接bean
models.get(0).getModel();