在正常编写简单Java类的过程一定要提供有无惨构造,甚至有许多自己定义的工具类也都会提供有无惨构造,所以使用构造方法的注入操作并不是我们喜欢1方式.
实际上任何的类都会通过setter设置属性,这一点在简单Java类上表现的特别明显,
范例:定义Dept类
package cn.zwb.vo;
public class Dept {
private Integer deptno;
private String dname;
public Dept(){}
public Integer getDeptno() {
return deptno;
}
public void setDeptno(Integer deptno) {
this.deptno = deptno;
}
public String getDname() {
return dname;
<bean id="dept" class="cn.zwb.vo.Dept">
<property name="deptno" value="10"></property>
<property name="dname" value="开发部"></property>
</bean>
}public void setDname(String dname) {this.dname = dname;}@Overridepublic String toString() {// TODO Auto-generated method stubreturn "部门编号:"+ this.deptno+ ",名称"+this.dname;}}
在传统的操作之中一定是首先实例化Dept类对象,而后调用setter设置内容,但是现在可以利用Spring动态设置内容.
范例:观察Spring的注入操作
<bean id="dept" class="cn.zwb.vo.Dept">
<property name="deptno" value="10"></property>
<property name="dname" value="开发部"></property>
</bean>
利用这种setter的设置才是在实际开发之中使用最多的操作情况,
但是这整个利用setter注入其强大之处,还在于可以引用 其他的类型的Bean对象.
范例:定义Emp.java类
package cn.zwb.vo;
public class Emp {
private Integer empno;
private String ename;
private Dept dept;
public Integer getEmpno() {
return empno;
}
public void setEmpno(Integer empno) {
this.empno = empno;
}
public String getEname() {
return ename;
}
public void setEname(String ename) {
this.ename = ename;
}
public Dept getDept() {
return dept;
}
public void setDept(Dept dept) {
this.dept = dept;
}
@Override
public String toString() {
return "雇员编号"
+ this.empno
+ ",姓名"
+ this.ename
+ ",部门"
+this.dept;
}
}
范例:编写applicationContext.xml
<bean id="emp" class="cn.zwb.vo.Emp">
<property name="empno" value="7369"></property>
<property name="ename" value="zwb"></property>
<property name="dept" ref="dept"></property>
</bean>
如果现在是具体的内容则使用value属性,如果要引用其他Bean的对象,那么就使用"ref"属性.
如果现在某个内容要是null怎么办呢?
现在有两种方式设置null:
方式一:不设置dname属性,内容就是null
方式二:直接设置为null
<property name="dname"><null/></property>
但是以上所进行的属性设置只是设置了常用的类型,例如:Integer,String,其他引用,可是在实际的开发之中还有可能设置布尔值.但是对于布尔值的设置,在Spring里面支持如下几种:true\false,1\0,on\off,yes\no
范例:设置布尔型
package cn.zwb.vo;
public class Dept {
private Integer deptno;
private String dname;
private boolean close;
public Dept(){}
@Override
public String toString() {
// TODO Auto-generated method stub
return "部门编号:"
+ this.deptno
+ ",名称"
+this.dname
+",关闭标记:"
+ this.close;
}
public boolean isClose() {
return close;
}
public void setClose(boolean close) {
this.close = close;
}
}
<property name="close" value="off"></property>
<property name="close" value="no"></property>