我最近开始使用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);
}
}