在正常编写简单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>