Set注入
set注入依靠的是反射实体类中set方法来进行对参数的赋值与修改
Spring根据实体类中不同的参数类型也有不同的操作。
1.常量注入
实体类中:
private String name;
public void setName(String name) {
this.name = name;
}
bean配置:
<bean id="user" class="com.nicht.pojo.User">
<property name="name" value="孙笑川"/>
</bean>
2.实体类注入(bean注入)
实体类中
private Work work;
public void setwork(Work work) {
this.work = work;
bean配置:
<bean id="works" class="com.nicht.pojo.Work">
<property name="work" value="主管"/>
</bean>
<bean id="user" class="com.kuang.pojo.Student">
<property name="name" value="孙笑川"/>
<property name="work" ref="works"/>
</bean>
3.数组注入
实体类中
private String[] friends;
public void setFriends(String[] friends) {
this.friends = friends;
bean配置:
<bean id="user" class="com.nicht.pojo.User">
<property name="friends">
<array>
<value>韩金龙</value>
<value>卢本伟</value>
<value>陈义</value>
</array>
</property>
</bean>
4.List注入
实体类中:
private List<String> hobbys;
public void setHobbys(List<String> hobbys) {
this.hobbys =hobbys;
bean配置:
<property name="hobbys">
<list>
<value>吃饭</value>
<value>睡觉</value>
<value>游戏</value>
</list>
</property>
5.Map注入
实体类中:
private Map<String,String> city;
public void setCity(Map<String,String> city) {
this.city =city;
bean配置:
<property name="city">
<map>
<entry key="户籍" value="茂名"/>
<entry key="现居住地" value="芜湖"/>
</map>
</property>
6.set注入
实体类中:
private Set<String> number;
public void setNumber(Set<String> number) {
this.number =number;
<property name="number">
<set>
<value>15859438666</value>
<value>13515266588</value>
</set>
</property>
7.properties注入
实体类中:
private Properties info;
p public void setInfo(Properties info) {
this.info = info;
}
bean配置
<property name="info">
<props>
<prop key="工号">2010254585</prop>
<prop key="性别">男</prop>
<prop key="姓名">孙笑川</prop>
</props>
</property>
8.注意
如果要想属性的值为NULL,则可以在bean中配置
<property name="name"><null/></property>
P,C命名的注入
p命名和c命名注入都是为了简化bean配置的复杂程度,本质上还是可以用set注入代替的
实体类:
public class User {
private String name;
private String work;
public void setName(String name) {
this.name = name;
}
public void setWork(int work) {
this.work = work;
}
@Override
public String toString() {
return "User{" +
"name='" + name + '\'' +
", work=" + work +
'}';
}
}
p命名空间
p命名空间需要在头文件导入约束
xmlns:p="http://www.springframework.org/schema/p"
bean配置:
<bean id="user" class="com.nicht.pojo.User" p:name="孙笑川" p:work="清洁工"/>
- p命名空间还是依靠set方法来进行注入
c命名空间
c命名空间也需要在头文件导入约束
xmlns:c="http://www.springframework.org/schema/c"
bean配置
<bean id="user" class="com.nicht.pojo.User" c:name="韩金龙" c:work="主管"/>
- c命名空间靠的是构造注入,实体类必须有有参构造,才能够使用c命名空间,否则会报错