Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java @带有@Bean注释的方法行为的订单_Java_Spring_Autowired_Spring Bean - Fatal编程技术网

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();