我最近开始使用Spring框架。
在书中,我找到了以下示例:

public class DamselRescuingKnight implements Knight {

   private RescueDamselQuest quest;

   public DamselRescuingKnight() {
      this.quest = new RescueDamselQuest();
   }

   public void embarkOnQuest() {
      quest.embark();
   }
}


使用Spring构造函数依赖注入,示例变为:

public class DamselRescuingKnight implements Knight {

   private Quest quest;

   public DamselRescuingKnight(Quest quest) {
      this.quest = quest;
   }

   public void embarkOnQuest() {
      quest.embark();
   }
}


而xml文件配置为:

<bean id="knight" class="com.springinaction.knights.DamselRescuingKnight">
   <constructor-arg ref="quest" />
</bean>

<bean id="quest" class="com.springinaction.knights.somethingThatImplementsQuest">
</bean>


为了完全理解这个概念,
您能否仅使用Java编写相同类的依赖注入的替代示例(没有Spring,所以没有xml文件)?

最佳答案

这等效于配置文件中的依赖项注入。唯一的区别是您的Quest对象是在BraveKnight实例之后创建的。

public class BraveKnight {
    private Quest quest;
    public BraveKnight(Quest quest) {
        this.quest = quest;
    }
}

public class Quest {

}

public class Main {
    public static void main (String[] args) {
        Quest quest = new Quest();
        BraveKnight knight = new BraveKnight(quest);
    }
}

10-06 02:16