依赖注入的方式有哪些?

IoC(Inverse of Contrlo)的字面意思是控制反转,“控制”是指某一接口的具体实现类的选择控制权,“反转”是指 这种控制权从调用类中移除,转交给了第三方(容器或者协作类)决定,因为IoC的名字起得不够开门见山,所以又提出了DI(依赖注入:Dependency Injection)的概念来替代 IoC,从注入方法看,这要有三种类型:

① 构造函数注入

public class MoAttack {
	private GeLi geli;
	//①注入革离的具体扮演者
	public MoAttack(GeLi geli){
		this.geli = geli;
	}
	public void cityGateAsk(){
		geli.responseAsk("墨者革离!");
	}
}
MoAttack 的构造函数不关心具体是谁扮演革离这个角色,只需要在①处传入的相应的对象即可。

public class Director {
   public void direct(){
	   //①指定角色的扮演者
	   GeLi geli = new LiuDeHua();
	   //②注入具体扮演者到剧本中
	   MoAttack moAttack = new MoAttack(geli);
	   moAttack.cityGateAsk();
   }
}

② 属性注入

    构造函数注入的时候都需要先实例化geli,但有时候不需要实例化geli,而属性注入可以有选择的通过setter方法来完成调用类所需依赖的注入,更加灵活方便:

public class MoAttack {
	private GeLi geli;
	//①属性注入方法
	public void setGeli(Geli geli){
		this.geli = geli;
	}	
	public void cityGateAsk(){
		geli.responseAsk("墨者革离!");
	}
}

public class Director {
   public void direct(){
	   //①指定角色的扮演者
	   GeLi geli = new LiuDeHua();
	   MoAttack moAttack = new MoAttack();
	   //②调用属性setter方法注入
	   moAttack.setGeli(geli);
	   moAttack.cityGateAsk();
   }
}


③ 接口注入

需要额外声明一个接口,不提倡

注: Spring尽量采用构造函数注入和属性注入(推荐)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值