Spring依赖注入为字面量类型赋值的方式
为字面量赋值一般用两种方式处理setter注入和构造器注入(不常用),另外字面量中涉及到特殊字符的赋值,有两种解决方式:用其对应的标识和XML中的一个特殊的标签CDATA节
下面是具体的代码解释
1.setter注入
<bean id="studentTwo" class="com.qcw.spring.pojo.Student">
//property:通过成员变量的set方法进行赋值
//name:设置需要赋值的属性名(和set方法有关)
//value:设置为字面量属性所赋的值
<property name="sid" value="1001"></property>
<property name="sname" value="张三"></property>
<property name="age" value="23"></property>
<property name="gender" value="男"></property>
</bean>
1.构造器注入
这里由于构造器注入可以直接利用构造方法实现赋值,不过由此产生了当在Student类中由多个构造类可以匹配时无法匹配我们想要的属性,解决方式就是在constructor-arg标签中加上name属性。如下所示
//构造方法
public Student(Integer sid, String sname, String gender, Integer age) {
this.sid = sid;
this.sname = sname;
this.gender = gender;
this.age = age;
}
public Student(Integer sid, String sname, String gender, Double score) {
this.sid = sid;
this.sname = sname;
this.gender = gender;
this.score = score;
}
<bean id="studentThree" class="com.qcw.spring.pojo.Student">
<constructor-arg value="1002"></constructor-arg>
<constructor-arg value="李四"></constructor-arg>
<constructor-arg value="女"></constructor-arg>
<constructor-arg value="24" name="age"></constructor-arg>
</bean>
1.特殊值处理
这里两种方式实现"<王五>"给sname的赋值
<bean id="studentFour" class="com.qcw.spring.pojo.Student">
<property name="sid" value="1003"></property>
//<:<(小于号所对应的标识) >:>(大于号所对应的标识)
//CDATA节其中的内容会原样解析<![CDATA[]]>,CDATA节是XML中的一个特殊的标签,因此不能写在一个属性中
//<property name="sname" value="<王五>"></property>
<property name="sname">
<value><![CDATA[<王五>]]></value>
</property>
<property name="gender">
<null/>
</property>
</bean>