Spring 由构造函数自动装配,通过构造函数的参数与配置文件中的 beans 名称进行匹配和连接,匹配成功,注入 bean ,否则,抛出异常
    案例代码:
    Person.java

    1. package com.baklib.custom;
    2. public class Person {
    3. private String name;
    4. private int age;
    5. public Person(String name, int age) {
    6. this.name = name;
    7. this.age = age;
    8. }
    9. public String getName() {
    10. return name;
    11. }
    12. public int getAge() {
    13. return age;
    14. }
    15. }

    Car.java

    1. package com.baklib.custom;
    2. public class Car {
    3. private String name;
    4. private double price;
    5. public Car(String name, double price) {
    6. this.name = name;
    7. this.price = price;
    8. }
    9. public String getName() {
    10. return name;
    11. }
    12. public double getPrice() {
    13. return price;
    14. }
    15. }

    Action.java

    1. package com.baklib.custom;
    2. public class Action {
    3. private Person person;
    4. private Car car;
    5. public Action(Person person, Car car) {
    6. this.person = person;
    7. this.car = car;
    8. }
    9. public Person getPerson() {
    10. return person;
    11. }
    12. public Car getCar() {
    13. return car;
    14. }
    15. public void buyCar() {
    16. System.out.println(person.getName()+"今年"+person.getAge()+"岁,花了"
    17. +car.getPrice()+"元买了"+car.getName());
    18. }
    19. }

    MainApp.java

    1. package com.baklib.custom;
    2. import org.springframework.context.ApplicationContext;
    3. import org.springframework.context.support.ClassPathXmlApplicationContext;
    4. public class MainApp {
    5. public static void main(String[] args) {
    6. ApplicationContext context = new ClassPathXmlApplicationContext("Beans.xml");
    7. Action action = (Action) context.getBean("action");
    8. action.buyCar();
    9. }
    10. }

    配置文件 Beans.xml

    1. <?xml version="1.0" encoding="UTF-8"?>
    2. <beans xmlns="http://www.springframework.org/schema/beans"
    3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    4. xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
    5. <bean id="action" class="com.baklib.custom.Action" autowire="constructor">
    6. </bean>
    7. <bean id="car" class="com.baklib.custom.Car">
    8. <constructor-arg name="name" value="小轿车"/>
    9. <constructor-arg name="price" value="100000"/>
    10. </bean>
    11. <bean id="person" class="com.baklib.custom.Person">
    12. <constructor-arg name="name" value="张三"/>
    13. <constructor-arg name="age" value="20"/>
    14. </bean>
    15. </beans>

    编写完以上代码,就可以运行这个程序,运行结束后,可以在控制台看到下面的信息

    1. 张三今年20岁,花了100000.0元买了小轿车