#对象类型的注入
值类型:value属性
对象类型:ref属性
<bean name="user" class="Object.User" init-method="init" destroy-method="destroy">
<property name="name" value="wuxiangsheng"></property>
<property name="age" value="20"></property>
<property name="car" ref="car"></property>
</bean>
<bean name="car" class="Object.Car">
<property name="name" value="奥迪"></property>
<property name="age" value="1"></property>
</bean>
#Set方式注入
直接在配置文件中指定对象属性的值
<bean name="user" class="Object.User">
<property name="name" value="wuxiangsheng"></property>
<property name="age" value="20"></property>
</bean>
#构造方法注入
使用constructor-arg,为构造方法的属性传参。
为了在多个构造方法中确定指定的构造方法,使用type属性和index属性。
<bean name="user" class="Object.User">
<constructor-arg name="name" value="zhangsan"></constructor-arg>
<constructor-arg name="age" value="30"></constructor-arg>
</bean>
#p名称空间注入
值类型:p:属性名=值
对象类型:p:属性名-ref=对象bean名
<!-- 导入额外空间 -->
xmlns:p="http://www.springframework.org/schema/p"
<bean name="user" class="Object.User" p:name="wxs" p:age="10" p:car-ref="car"></bean>
<bean name="car" class="Object.Car">
<property name="name" value="奥迪"></property>
<property name="age" value="1"></property>
</bean>
#SPEL(Spring Expression Language)注入
spel注入需要和Set注入或构造方法注入结合使用。
将value值修改为#{Bean对象名.属性}的格式。
注:引用类型没有spel注入,因此仍然使用ref!
<bean name ="user" class="Object.User">
<property name="name" value="#{user1.name}"></property>
<property name="age" value="#{user1.age}"></property>
<property name="car" ref="car"></property>
</bean>
#复杂类型注入
<bean name="cb" class="Object.CollectionBean">
<!-- 数组类型注入 -->
<property name="arr">
<array>
<value>wxs</value>
<value>员工</value>
</array>
</property>
<!-- List类型注入 -->
<property name="list">
<list>
<value>zhouyang</value>
<value>清理员</value>
</list>
</property>
<!-- Map类型注入 -->
<property name="map">
<map>
<entry key="姓名" value="吴祥生"></entry>
<entry key="年龄" value="20"></entry>
<entry key="汽车" value-ref="car"></entry>
</map>
</property>
<!-- properties类型注入 -->
<property name="properties">
<props>
<prop key="url">http://www.jitwxs.cn</prop>
<prop key="name">猿来极客</prop>
</props>
</property>
</bean>
<bean name="car" class="Object.Car">
<property name="name" value="奥迪"></property>
<property name="age" value="1"></property>
</bean>
#相关JavaBean类
//User.java
package Object;
public class User {
private String name;
private Integer age;
private Car car;
public User(){}
public User(String name, Integer age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public Car getCar() {
return car;
}
public void setCar(Car car) {
this.car = car;
}
@Override
public String toString() {
return "User [name=" + name + ", age=" + age + ", car=" + car + "]";
}
}
//Car.java
package Object;
public class Car {
private String name;
private Integer age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
@Override
public String toString() {
return "Car [name=" + name + ", age=" + age + "]";
}
}
//CollectionBean.java
package Object;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.Properties;
public class CollectionBean {
private Object[] arr;
private List list;
private Map map;
private Properties properties;
public Map getMap() {
return map;
}
public void setMap(Map map) {
this.map = map;
}
public Object[] getArr() {
return arr;
}
public void setArr(Object[] arr) {
this.arr = arr;
}
public List getList() {
return list;
}
public void setList(List list) {
this.list = list;
}
public Properties getProperties() {
return properties;
}
public void setProperties(Properties properties) {
this.properties = properties;
}
@Override
public String toString() {
return "CollectionBean [arr=" + Arrays.toString(arr) + ", list=" + list + ", map=" + map + ", properties="
+ properties + "]";
}
}
481

被折叠的 条评论
为什么被折叠?



