注入Bean属性---构造注入配置方案
在Spring配置文件中通过<constructor-arg>元素为构造方法传参
注意:
1、一个<constructor-arg>元素表示构造方法的一个参数,且使用时不区分顺序。
2、通过<constructor-arg>元素的index 属性可以指定该参数的位置索引,位置从0 开始。
3、<constructor-arg>元素还提供了type 属性用来指定参数的类型,避免字符串和基本数据类型的混淆。
注入不同数据类型
构造器注入案例:
创建两个实体类 Car 和Student 并封装,重写toString方法
//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;}@Overridepublic 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中配置如下
p命名空间注入
然后书写单测代码:
public void addTest(){ ApplicationContext ctx=new ClassPathXmlApplicationContext("applicationContext.xml"); Student student=(Student) ctx.getBean("stu"); System.out.println(student);
运行后的结果:
___________________________________________________________________________________________________________________________
设值注入
applicationContext.xml中的配置
运行结果:
________________________________________________________________________________________________________________________
P标签注入
运行结果