在Spring配置文件中經過<constructor-arg>元素爲構造方法傳參app
注意:ide
1、一個<constructor-arg>元素表示構造方法的一個參數,且使用時不區分順序。this
2、經過<constructor-arg>元素的index 屬性能夠指定該參數的位置索引,位置從0 開始。spa
三、<constructor-arg>元素還提供了type 屬性用來指定參數的類型,避免字符串和基本數據類型的混淆。prototype
構造器注入案例:code
建立兩個實體類 Car 和Student 並封裝,重寫toString方法xml
//Car
package cn.happy.entity; public class Car { private String color; private String brand; //無參構造 public Car() { } //帶參構造 public Car(String color, String brand) { super(); this.color = color; this.brand = brand; } @Override public String toString() { return "Car [color=" + color + ", brand=" + brand + "]"; } public String getColor() { return color; } public void setColor(String color) { this.color = color; } public String getBrand() { return brand; } public void setBrand(String brand) { this.brand = brand; } }
//Student類 package cn.happy.entity; public class Student { private String name; private String age; private Car car; //無參構造 public Student() { //System.out.println("Student.Student()"); } //帶參構造 public Student(String name, String age, Car car) { this.name = name; this.age = age; this.car = car; } @Override //重寫toString方法 public String toString() { return "Student [name=" + name + ", age=" + age + ", car=" + car + "]"; } public Car getCar() { return car; } public void setCar(Car car) { this.car = car; } public String getAge() { return age; } public void setAge(String age) { this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } }
在applicationContext.xml中配置以下blog
<!-- 構造注入 --> <bean id="car" class="entity.Car"> <property name="brand" value="二八大槓"></property> </bean> <bean id="student" class="entity.Student"> <constructor-arg index="0" value="成成"></constructor-arg> <constructor-arg index="1" value="28"></constructor-arg> <constructor-arg index="2" ref="car"></constructor-arg> </bean> p命名空間注入 <bean id="car" class="entity.Car" p:color="black"> <property name="brand" value="賤賤牌自行車"></property> </bean> <bean id="student" class="entity.Student" p:name="賤賤" p:age="25" p:car-ref="car"/>
而後書寫單測代碼:索引
public void addTest(){ ApplicationContext ctx=new ClassPathXmlApplicationContext("applicationContext.xml"); Student student=(Student) ctx.getBean("stu"); System.out.println(student);
運行後的結果:字符串
___________________________________________________________________________________________________________________________
設值注入
applicationContext.xml中的配置
<!--設值注入 --> <bean id="car" class="cn.happy.entity.Car"> <property name="brand" value="二手夏利"></property> </bean> <bean id="stu" class="cn.happy.entity.Student" scope="prototype"> <property name="name" value="呵呵"></property> <property name="age" value="13"></property> <property name="car" ref="car"></property> </bean>
運行結果:
________________________________________________________________________________________________________________________
P標籤注入
<!-- p標籤注入 --> <bean id="car" class="cn.happy.entity.Car" p:color="red"> <property name="brand" value="奧迪"></property> </bean> <bean id="stu" class="cn.happy.entity.Student" p:name="李四" p:age="12" p:car-ref="car"> </bean>
運行結果