一、构造方法注入
1.普通属性(constructor-arg name value (index type可选))
index:构造函数的参数索引,如 index="0" 构造函数第一个参数
type:构造函数的参数类型,如 type="java.lang.String"构造参数类型为String类型
public class Car {
private String name;
private Double price;
public Car(String name, Double price) {
super();
this.name = name;
this.price = price;
}
}
<!-- 构造方法的方式 -->
<bean id="car" class="com.mark.spring.demo.Car">
<constructor-arg name="name" value="BWM"/>
<constructor-arg name="price" value="8888"/>
</bean>
2.对象类型属性(constructor-arg name ref(index type可选))
<!-- 构造方法的方式 -->
<bean id="user" class="com.mark.spring.demo.User">
<constructor-arg name="name" value="mark"/>
<constructor-arg name="car" ref="car"/>
</bean>
<!-- 将Car对象配置到容器中 -->
<bean name="car" class="com.mark.test.Car">
<property name="name" value="奔驰"></property>
<property name="color" value="黑色"></property>
</bean>
二、set方法注入
1.普通属性(property name value)
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;
}
}
<!-- set方法的方式 -->
<bean id="car" class="com.mark.spring.demo.Car">
<property name="name" value="BWM"/>
<property name="price" value="8888"/>
</bean>
2.对象类型属性(property name ref)
public class User {
private String name;
private Integer age;
private Car car;
//...
}
<bean name="user" class="com.mark.test.User">
<!-- 使用property标签注入属性值 name:类属性名称 value属性:往属性中注入的值 -->
<property name="name" value="mark"></property>
<property name="age" value="18"></property>
<property name="car" ref="car"></property>
</bean>
<!-- 将Car对象配置到容器中 -->
<bean name="car" class="com.mark.test.Car">
<property name="name" value="奔驰"></property>
<property name="color" value="黑色"></property>
</bean>
public class CollectionBean {
private String[] arrs;
private List<String> list;
private Set<String> set;
private Map<String,String> map;
//set...
}
3.数组、list集合类型属性(property name| list | value/ref)
<bean id="collectionBean" class="com.mark.spring.demo.CollectionBean">
<!-- 数组类型或者list集合类型 -->
<property name="arrs">
<list>
<value>tom</value>
<value>mark</value>
<value>mario</value>
<!--<ref/>-->
</list>
</property>
</bean>
4.set集合属性(property name| set | value/ref)
<bean id="collectionBean" class="com.mark.spring.demo.CollectionBean">
<!-- set集合类型 -->
<property name="set">
<set>
<value>tom</value>
<value>mark</value>
<value>mario</value>
<!--<ref/>-->
</set>
</property>
</bean>
5.Map集合属性注入 (property name| map| entry key/key-ref value/value-ref)
<bean id="collectionBean" class="com.mark.spring.demo.CollectionBean">
<!-- map集合类型 -->
<property name="map">
<map>
<entry key="1" value="mark"/>
<entry key="2" value="tom"/>
<!-- <entry key-ref="" value-ref=""/> -->
</map>
</property>
</bean>
三、p命名空间注入 (需要先引入P命名空间Spring2.5后)
1.普通属性(p:属性名="值")
<bean name="car" class="com.mark.test.Car" p:name="BWM" p:price="8888"></bean>
2.对象类型属性(p:属性名-ref ="bean名称")
<bean name="user" class="com.mark.test.User" p:name="lucy" p:age="16" p:car-ref="car"></bean>
四、 SpEL表达式注入(#{SpEL}Spring3.0后)
1.普通属性value=#{值}
<!-- set方法的方式 -->
<bean id="car" class="com.mark.spring.demo.Car">
<property name="name" value="#{'BWM'}"/>
<property name="price" value="#{8888}"/>
</bean>
2.对象类型属性value=#{引用对象名称}
<bean name="user" class="com.mark.test.User">
<!-- 使用property标签注入属性值 name:类属性名称 value属性:往属性中注入的值 -->
<property name="name" value="#{'mark'}"></property>
<property name="age" value="#{18}"></property>
<property name="car" value="#{car2}"></property>
</bean>
<!-- 将Car对象配置到容器中 -->
<bean name="car2" class="com.mark.test.Car">
<property name="name" value="奔驰"></property>
<property name="color" value="黑色"></property>
</bean>