@Configuration
public class Config1 {
    @Bean()
    public Person getP(){
        Person p = new Person();
        p.setName("config1 person");
        return p;
    }
}

public class Config2 {
    @Bean()
    public Person getP(){
        Person p = new Person();
        p.setName("config2 person");
        return p;
    }
}

 public static void main(String[] args){
        ApplicationContext context = new AnnotationConfigApplicationContext(Config1.class,Config2.class);
        Person p = context.getBean("getP",Person.class);
        System.out.println(p.getName());
    }

public class Person{
    public String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

打印:

config2 person

因为

 new AnnotationConfigApplicationContext(Config1.class,Config2.class);中 config2.class放在后面,等于覆盖前面的bean。

若代码改为
public static void main(String[] args){
        ApplicationContext context = new AnnotationConfigApplicationContext(Config2.class,Config1.class);
        Person p = context.getBean("getP",Person.class);
        System.out.println(p.getName());
    }

则打印:

config1 person

 

相关文章:

  • 2021-11-17
  • 2021-10-22
  • 2021-06-19
  • 2022-12-23
  • 2021-10-28
  • 2021-09-25
  • 2022-01-10
猜你喜欢
  • 2022-12-23
  • 2021-07-01
  • 2021-11-30
  • 2021-04-21
  • 2021-06-10
  • 2022-12-23
  • 2021-05-18
相关资源
相似解决方案