Java 带构造函数的自动连接,IOC将如何在多个构造函数中选择构造函数

Java 带构造函数的自动连接,IOC将如何在多个构造函数中选择构造函数,java,spring,autowired,spring-ioc,Java,Spring,Autowired,Spring Ioc,我有三颗豆子:电影、导演、英雄 电影豆: public class Movie { private Director director; private String name; private Hero hero; public Movie(Director director, Hero hero) { System.out.println("m1"); this.director = director; t

我有三颗豆子:电影、导演、英雄

电影豆:

public class Movie {

    private Director director;
    private String name;

    private Hero hero;

    public Movie(Director director, Hero hero) {
        System.out.println("m1");
        this.director = director;
        this.name = name;
        this.hero = hero;
    }

    public Movie(Director director, String name) {
        System.out.println("m2");
        this.director = director;
        this.name = name;
    }

    public Movie(Director director) {
        System.out.println("m3");
        this.director = director;
    }

    public Movie() {
        System.out.println("m4");
    }
}
public class Director {

}

public class Hero {

}
导演和英雄豆:

public class Movie {

    private Director director;
    private String name;

    private Hero hero;

    public Movie(Director director, Hero hero) {
        System.out.println("m1");
        this.director = director;
        this.name = name;
        this.hero = hero;
    }

    public Movie(Director director, String name) {
        System.out.println("m2");
        this.director = director;
        this.name = name;
    }

    public Movie(Director director) {
        System.out.println("m3");
        this.director = director;
    }

    public Movie() {
        System.out.println("m4");
    }
}
public class Director {

}

public class Hero {

}
spring core.xml

<bean id="movieBean" class="Movie" autowire="constructor" />

<bean id="directorBean" class="Director"></bean>
<bean id="heroBean" class="Hero"></bean>
输出是“m1”,即调用的构造函数是
电影(导演、英雄)


我的问题是:为什么只调用这个构造函数,以及如果我们使用构造函数自动连接,在注入依赖项时,IOC容器将如何在多个构造函数中进行选择。这与创建一个新对象时只调用一个构造函数的方式类似(如果您想真正做到精确,可以链接调用此构造函数的构造函数)


在本例中,将使用具有大多数参数的构造函数,这些参数可由上下文中可用的其他bean满足。

Gangadhar链接到我所要求的确切线程: