Car.java
package com.cherry.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 + "]";
}
}
Car2.java
package com.cherry.spring.demo4;
/**
* set方法的屬性注入
* @author zhang
*
*/
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 + "]";
}
}
Employee.java
package com.cherry.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 + "]";
}
}
applicationContext.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.cherry.spring.demo4.Car">
<constructor-arg name="name" value="捷達"/>
<constructor-arg name="price" value="50000"/>
</bean>
<!-- set方法的方式 -->
<bean id="car2" class="com.cherry.spring.demo4.Car2">
<property name="name" value="桑塔納"/>
<property name="price" value="20000"/>
</bean>
<!-- set方法注入對象類型的屬性 -->
<bean id="employee" class="com.cherry.spring.demo4.Employee">
<!-- value:設置普通類型的值,ref:設置其他的類的id或name -->
<property name="name" value="lion"/>
<property name="car2" ref="car2"/>
</bean>
<!-- 改爲p名稱空間的方式 -->
<!-- <bean id="car2" class="com.cherry.spring.demo4.Car2" p:name="奇瑞" p:price="30000"></bean>
<bean id="employee" class="com.cherry.spring.demo4.Employee" p:name="liu" p:car2-ref="car2"></bean> -->
<!-- SpEL的屬性注入 -->
<bean id="carInfo" class="com.cherry.spring.demo4.CarInfo">
</bean>
<bean id="car2" class="com.cherry.spring.demo4.Car2">
<property name="name" value="#{carInfo.name}"></property>
<property name="price" value="#{carInfo.calculatorPrice()}"></property>
</bean>
<bean id="employee" class="com.cherry.spring.demo4.Employee">
<property name="name" value="#{'feng'}"></property>
<property name="car2" value="#{car2}"></property>
</bean>
<!-- Spring的集合屬性的注入:類中需要提供set方法 -->
<!-- 注入數組類型 -->
<bean id="collection" class="com.cherry.spring.demo5.CollectionBean">
<!-- 數組類型 -->
<property name="args">
<list>
<value></value>
<ref/>
</list>
</property>
<!-- 注入list集合 -->
<property name="list">
<list>
<value></value>
<value></value>
</list>
</property>
<!-- 注入set集合 -->
<property name="set">
<set>
<value></value>
</set>
</property>
<!-- 注入map集合 -->
<property name="map">
<map>
<entry key="" value=""/>
</map>
</property>
</bean>
</beans>
測試類
package com.cherry.spring.demo4;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
/**
* 屬性注入的方式
* @author zhang
*
*/
public class SpringDemo4 {
@Test
/**
* 構造方法的注入
*/
public void demo1() {
ApplicationContext applicationContext=new ClassPathXmlApplicationContext("applicationContext.xml");
Car car = (Car) applicationContext.getBean("car");
System.out.println(car);
}
@Test
/**
* set方法的注入
*/
public void demo2() {
ApplicationContext applicationContext=new ClassPathXmlApplicationContext("applicationContext.xml");
Car2 car2 = (Car2) applicationContext.getBean("car2");
System.out.println(car2);
}
@Test
/**
* set方法注入對象類型
*/
public void demo3() {
ApplicationContext applicationContext=new ClassPathXmlApplicationContext("applicationContext.xml");
Employee employee = (Employee) applicationContext.getBean("employee");
System.out.println(employee);
}
}
通過修改配置文件,從而避免頻繁修改源代碼