为什么要使用依赖注入?

来源:互联网 发布:尚学堂大数据课表 编辑:程序博客网 时间:2024/06/05 21:49

Spring IoC容器的依赖有两层含义:Bean依赖容器容器注入Bean的依赖资源

     Bean依赖容器也就是说Bean要依赖于容器,这里的依赖是指容器负责创建Bean并管理Bean的生命周期,正是由于由容器来控制创建Bean并注入依赖,也就是控制权被反转了,这也正是IoC名字的由来,此处的有依赖是指Bean和容器之间的依赖关系

     容器注入Bean的依赖资源容器负责注入Bean的依赖资源,依赖资源可以是Bean、外部文件、常量数据等,在Java中都反映为对象,并且由容器负责组装Bean之间的依赖关系,此处的依赖是指Bean之间的依赖关系可以认为是传统类与类之间的“关联”、“聚合”、“组合”关系


那么,我们为什么要使用依赖注入呢?依赖注入有什么好处呢?

1、 动态替换Bean依赖对象,程序更灵活替换Bean依赖对象,无需修改源文件:应用依赖注入后,由于可以采用配置文件方式实现,从而能随时动态的替换Bean的依赖对象,无需修改java源文件;

2、 更好实践面向接口编程,代码更清晰在Bean中只需指定依赖对象的接口,接口定义依赖对象完成的功能,通过容器注入依赖实现;

3、更好实践优先使用对象组合,而不是类继承因为IoC容器采用注入依赖,也就是组合对象,从而更好的实践对象组合。

  • 采用对象组合,Bean的功能可能由几个依赖Bean的功能组合而成,其Bean本身可能只提供少许功能或根本无任何功能,全部委托给依赖Bean,对象组合具有动态性,能更方便的替换掉依赖Bean,从而改变Bean功能;
  • 而如果采用类继承,Bean没有依赖Bean,而是采用继承方式添加新功能,,而且功能是在编译时就确定了,不具有动态性,而且采用类继承导致Bean与子Bean之间高度耦合,难以复用。

     增加Bean可复用性依赖于对象组合,Bean更可复用且复用更简单;

     降低Bean之间耦合由于我们完全采用面向接口编程,在代码中没有直接引用Bean依赖实现,全部引用接口,而且不会出现显示的创建依赖对象代码,而且这些依赖是由容器来注入,很容易替换依赖实现类,从而降低Bean与依赖之间耦合;

     代码结构更清晰要应用依赖注入,代码结构要按照规约方式进行书写,从而更好的应用一些最佳实践,因此代码结构更清晰。

 

从以上我们可以看出,其实依赖注入只是一种装配对象的手段,设计的类结构才是基础,如果设计的类结构不支持依赖注入,Spring IoC容器也注入不了任何东西,从而从根本上说如何设计好类结构才是关键,依赖注入只是一种装配对象手段”。

0 0
原创粉丝点击