Spring 由构造函数自动装配,通过构造函数的参数与配置文件中的 beans 名称进行匹配和连接,匹配成功,注入 bean ,否则,抛出异常
案例代码:
Person.java
package com.baklib.custom;public class Person {private String name;private int age;public Person(String name, int age) {this.name = name;this.age = age;}public String getName() {return name;}public int getAge() {return age;}}
Car.java
package com.baklib.custom;public class Car {private String name;private double price;public Car(String name, double price) {this.name = name;this.price = price;}public String getName() {return name;}public double getPrice() {return price;}}
Action.java
package com.baklib.custom;public class Action {private Person person;private Car car;public Action(Person person, Car car) {this.person = person;this.car = car;}public Person getPerson() {return person;}public Car getCar() {return car;}public void buyCar() {System.out.println(person.getName()+"今年"+person.getAge()+"岁,花了"+car.getPrice()+"元买了"+car.getName());}}
MainApp.java
package com.baklib.custom;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;public class MainApp {public static void main(String[] args) {ApplicationContext context = new ClassPathXmlApplicationContext("Beans.xml");Action action = (Action) context.getBean("action");action.buyCar();}}
配置文件 Beans.xml
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"><bean id="action" class="com.baklib.custom.Action" autowire="constructor"></bean><bean id="car" class="com.baklib.custom.Car"><constructor-arg name="name" value="小轿车"/><constructor-arg name="price" value="100000"/></bean><bean id="person" class="com.baklib.custom.Person"><constructor-arg name="name" value="张三"/><constructor-arg name="age" value="20"/></bean></beans>
编写完以上代码,就可以运行这个程序,运行结束后,可以在控制台看到下面的信息
张三今年20岁,花了100000.0元买了小轿车
