Spring的屬性注入
給Bean當中的屬性設置值:
一、普通類型的注入
1、構造方法的方式的屬性注入
<?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">
<!-- Spring的屬性注入的方式 -->
<!-- 構造方法的方式 -->
<bean id="car" class="com.itzheng.spring.demo4.Car">
<constructor-arg name="name" value="寶馬"/>
<constructor-arg name="price" value="800000"/>
</bean>
</beans>
package com.itzheng.spring.demo4;
public class Car {
private String name;
private Double price;
public Car(String name, Double price) {
super();
this.name = name;
this.price = price;
}
@Override
public String toString() {
return "Car [name=" + name + ", price=" + price + "]";
}
}
package com.itzheng.spring.demo4;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
/*
* 屬性注入的方式
*/
public class SpringDemo4 {
@Test
public void demo1() {
// 創建工程
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
// 獲得到對應XML當中的對象
Car car = (Car) applicationContext.getBean("car");
System.out.println(car);
}
}
2、Set方法的方式的屬性注入
<?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">
<!-- Spring的屬性注入的方式 -->
<!-- 構造方法的方式 -->
<!-- set方法方式符注入 -->
<bean id="car2" class="com.itzheng.spring.demo4.Car2">
<property name="name" value="奔馳"></property>
<property name="price" value="1000000"></property>
</bean>
</beans>
package com.itzheng.spring.demo4;
/*
* set方法的屬性注入
*/
public class Car2 {
private String name;
private Double price;
public void setName(String name) {
this.name = name;
}
public void setPrice(Double price) {
this.price = price;
}
@Override
public String toString() {
return "Car2 [name=" + name + ", price=" + price + "]";
}
}
/*
set方法注入
*/
@Test
public void demo2() {
// 創建工程
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
// 獲得到對應XML當中的對象
Car2 car2 = (Car2) applicationContext.getBean("car2");
System.out.println(car2);
}
二、對象類型注入
1、set方法來注入對象
創建類和對應的set方法
package com.itzheng.spring.demo4;
public class Employee {
private String name;
private Car2 car2;
public void setName(String name) {
this.name = name;
}
public void setCar2(Car2 car2) {
this.car2 = car2;
}
@Override
public String toString() {
return "Employee [name=" + name + ", car2=" + car2 + "]";
}
}
設置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">
<!-- Spring的屬性注入的方式 -->
<!-- 構造方法的方式 -->
<bean id="car" class="com.itzheng.spring.demo4.Car">
<constructor-arg name="name" value="寶馬"/>
<constructor-arg name="price" value="800000"/>
</bean>
<!-- set方法方式符注入 -->
<bean id="car2" class="com.itzheng.spring.demo4.Car2">
<property name="name" value="奔馳"></property>
<property name="price" value="1000000"></property>
</bean>
<!-- set方法去注入對象類型的屬性 -->
<bean id="employee" class="com.itzheng.spring.demo4.Employee">
<!-- value是用來設置普通類型的值。ref是用來設置其他類的id 或者name -->
<property name="name" value="張三"/>
<property name="car2" ref="car2"/>
</bean>
</beans>
value是用來設置普通類型的值。
ref是用來設置其他類的id 或者name ref是另外一個普通類型
2、構造方法來注入對象
創建類和對應的構造方法
package com.itzheng.spring.demo4;
public class Boos {
private String name;
private Car car;
public Boos(String name, Car car) {
super();
this.name = name;
this.car = car;
}
@Override
public String toString() {
return "Boos [name=" + name + ", car=" + car + "]";
}
}
<?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">
<!-- Spring的屬性注入的方式 -->
<!-- 構造方法的方式 -->
<bean id="car" class="com.itzheng.spring.demo4.Car">
<constructor-arg name="name" value="寶馬"/>
<constructor-arg name="price" value="800000"/>
</bean>
<bean id="boos" class="com.itzheng.spring.demo4.Boos">
<constructor-arg name="name" value="李四"/>
<constructor-arg name="car" ref="car"/>
</bean>
</beans>
ref設置對應的類
@Test
public void demo3() {
// 創建工程
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
// 獲得到對應XML當中的對象
Boos boos = (Boos) applicationContext.getBean("boos");
System.out.println(boos);
}