(四)setter注入

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


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Setter注入和构造器注入都是依赖注入的方式,用于将一个对象的依赖项注入到它当中,使得对象能够正常运行。它们各自有着不同的特点和应用场景。 构造器注入是指在创建一个对象的时候,通过构造函数将依赖项传递进去。这种方式下,依赖项是对象创建时必须的,因此它们是对象的一部分。构造器注入是一种强依赖的注入方式,它能够确保对象创建时依赖项已经准备就绪,从而保证对象的正常运行。 示例:假设有一个电脑对象,它有一个硬盘依赖项,通过构造器注入的方式可以这样实现: ```java public class Computer { private HardDrive hardDrive; public Computer(HardDrive hardDrive) { this.hardDrive = hardDrive; } } ``` Setter注入是指在对象创建好之后,通过setter方法将依赖项注入进去。这种方式下,依赖项是可选的,因为对象创建完毕后可以随时注入依赖项。Setter注入是一种松散的注入方式,它能够灵活地注入不同的依赖项,从而增强了对象的可配置性和可扩展性。 示例:继续以上面的电脑对象为例,我们可以通过setter注入的方式实现硬盘的注入: ```java public class Computer { private HardDrive hardDrive; public void setHardDrive(HardDrive hardDrive) { this.hardDrive = hardDrive; } } ``` 总的来说,构造器注入适用于对象初始化时必需的依赖项,而setter注入适用于对象创建后可选的依赖项。在实际应用中,可以根据具体情况选择合适的注入方式来满足对象的需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值