Spring中依赖注入有三种注入方式:
一、构造器注入: 构造器注入顾名思义就是在程序组件中实现构造器,构造器可以是一个也可以是多个。
二、设值注入(setter方式注入):设值注入就是通过setXxxx方法将bean注入到组件中
三、P命名空间注入package cn.jjz.spring726_1;
/**
* Created by lenovo on 2017/7/26.
*/
public class Stu {
private String name; //姓名
private int age; //年龄
private Car car; //车
//带参构造
public Stu(String name, int age, Car car) {
this.name = name;
this.age = age;
this.car = car;
}
//无参构造
public Stu() {
}
//get set 方法
public Car getCar() {
return car;
}
public void setCar(Car car) {
this.car = car;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
//tostring方法
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", age=" + age +
", car=" + car +
'}';
}
}
package cn.jjz.spring726_1;
/**
* Created by lenovo on 2017/7/26.
*/
public class Car {
private String name;
private String color;
@Override
public String toString() {
return "Car{" +
"name='" + name + '\'' +
", color='" + color + '\'' +
'}';
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
}
xml代码:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:p="http://www.springframework.org/schema/p"
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="car" class="cn.jjz.spring726_1.Car">
<property name="name" value="布加迪威龙"></property>
<property name="color" value="白色"></property>
</bean>
<!--设值注入-->
<bean id="stu" class="cn.jjz.spring726_1.Stu">
<property name="age" value="16"></property>
<property name="name" value="旺旺"></property>
<property name="car" ref="car"></property>
</bean>
<!--构造注入-->
<bean id="stu2" class="cn.jjz.spring726_1.Stu">
<!-- <constructor-arg name="age" value="11"></constructor-arg>
<constructor-arg name="name" value="流光"></constructor-arg>
<constructor-arg name="car" ref="car"></constructor-arg>-->
<constructor-arg index="0" value="流光"></constructor-arg>
<constructor-arg index="1" value="11"></constructor-arg>
<constructor-arg index="2" ref="car"></constructor-arg>
</bean>
<!--p命名空间注入-->
<bean id="stu3" class="cn.jjz.spring726_1.Stu" p:age="20" p:name="奖金" p:car-ref="car">
</bean>
</beans>
测试类代码:
package cn.jjz.springtest;
import cn.jjz.service.DemoService;
import cn.jjz.spring726_1.Stu;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
/**
* Created by lenovo on 2017/7/22.
*/
public class Spring726_1Test {
@Test
public void a(){
//设值注入
ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext726_1.xml");
Stu s= (Stu) context.getBean("stu");
System.out.println(s);
//构造注入
ApplicationContext context2=new ClassPathXmlApplicationContext("applicationContext726_1.xml");
Stu s2= (Stu) context2.getBean("stu2");
System.out.println(s2);
//p命名空间注入
ApplicationContext context3=new ClassPathXmlApplicationContext("applicationContext726_1.xml");
Stu s3= (Stu) context3.getBean("stu3");
System.out.println(s3);
}