spring IOC構造器注入使用
阿新 • • 發佈:2018-12-24
執行主類
package com.beans; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class Main { public static void main(String[] args) { //1.建立spring的IOC容器物件 //ApplicationContext 代表IOC容器 是 BeanFactory 介面的子介面 // ClassPathXmlApplicationContext: 是 ApplicationContext的實現類,從類路徑下來載入配置檔案 ApplicationContext ctx=new ClassPathXmlApplicationContext("applicationContext.xml"); //2.從IOC容器中獲取bean例項 //利用id定位到IOC容器中的bean Car car=ctx.getBean(car); System.out.println(car); } }
Car類
package com.beans; public class Car { private String brand; private String corp; private double price; private int maxSpeed; public Car(String brand, String corp, double price, int maxSpeed) { super(); this.brand = brand; this.corp = corp; this.price = price; this.maxSpeed = maxSpeed; } @Override public String toString() { return "Car [brand=" + brand + ", corp=" + corp + ", price=" + price + ", maxSpeed=" + maxSpeed + "]"; } }
xml配置檔案,主要注意的地方是這個標籤沒有name屬性,所以一定要按構造器的屬性的先後順序編寫好配置檔案。
比如第一個屬性String brand;
<constructor-arg value="Audi" index="0"></constructor-arg>
對應好位置就可以了。
<?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 class :bean 的全類名,通過反射的方式在IOC容器中建立bean,所以要求必須要有無參的構造器 id: 表示容器中唯一的id --> <!--通過構造方法配置bean的屬性 --> <bean id="car" class="com.beans.Car"> <constructor-arg value="Audi" index="0"></constructor-arg> <constructor-arg value="ShangHai" index="1"></constructor-arg> <constructor-arg value="30000" index="2"></constructor-arg> <constructor-arg value="200" index="3"></constructor-arg> </bean> </beans>