Spring 依赖注入

未使用Spring之前,可以这样管理两个类之间的依赖关系:

public class TextEditor {
   private SpellChecker spellChecker;  
   public TextEditor() {
      spellChecker = new SpellChecker();
   }
}

带来的问题是,SpellChecker的实现类与TextEditor的使用类耦合在一起了,如果变换了一种SpellChecker的实现方式,需要同步修改TextEditor的代码,不利于单元测试、也不利于后期功能的扩展

 

解决方式是解耦,即将TextEditor主动new SpellChecker的地方,转成被动的获取,通过暴露对外方法,来将具体的实现类对象传入TextEditor中,实现方式有两种:

一种是通过TextEditor的构造方法,在初始化TextEditor时将依赖传入:

public class TextEditor {
   private SpellChecker spellChecker;
   public TextEditor(SpellChecker spellChecker) {
      this.spellChecker = spellChecker;
   }
}

另一种方式是通过set方法来实现。这也是在使用Spring的过程中常用的方式,将依赖关系委托给Spring容器来管理

 

posted @ 2019-04-04 11:15  阿狸哥哥  阅读(163)  评论(0编辑  收藏  举报