spring中IOC的三种实现机制

spring控制反转

spring IOC的三种注入方式:

  1. 接口注入
  2. getter,setter方式注入
  3. 构造器注入

对象与对象之间的关系可以简单的理解为对象之间的依赖关系:

思考:对象与对象之间可能存在什么关系?(is a, has a,use a)

a) is a 关系

class A implements IA{} ; A 实现IA 接口

class A extends B{}; A 继承 B这个

b) has a 关系

class Point{}

class Circle{

  private Point point;

}

Circle对象中有一个Point类型的对象

c) use a 关系

class ProjectUtil{

public String getId(){

   return UUID.randomUUID().toString();

}}

1.接口注入

在需要使用接口的地方直接注入一个接口的实现类。在ssm框架中,service实现类都继承各自的service接口,对service使用@Service注入,在controller中则只是定义一个service接口,使用@Autowried注解获取。

2.getter,setter注入

在属性的set方法中设置需要使用类型的形参

3.构造器注入

在类中将要注入的类设置为属性,在构造方法中传入该类的实例


三种注入方式比较:

接口注入:

接口注入模式因为具备侵入性,它要求组件必须与特定的接口相关联,实际使用有限

setter注入:

依赖关系比较复杂的时候set注入模式比较简洁直观

构造器注入:

在构造期完成一个完整的、合法对的对象

所有依赖关系在构造函数中集中呈现

依赖关系在构造时由容器一次性设定,组件被创建之后一直处于相对“不变”的稳定状态

只有组件的创建者关心其内部的依赖关系,对调用者而言,该依赖关系处于黑盒之中

总结

Spring使用注入方式,为什么使用注入方式?这系列问题实际归结起来就是一句话,Spring的注入和IOC反转控制是一回事。

理论上:第三种注入方式(构造注入)在符合java使用原则上更加合理,第二种注入方式(set注入)作为补充

实际上:第二种注入方式(set注入)可以取得更加直观的效果,在使用工作上有不可比拟的优势,所有运用应该更加广泛




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值