制御の反転は、名前は白が財産内部のJava Beanが注入手順の内部で生成されるのではなく、これは実際にはSpring XML構成ファイルによって、いわゆる依存性注入に注入されていることを言って、今度は、示唆して制御することです。以下のコードを考えてみましょう
public class KnightOfTheRoundTable implements Knight {
private String name;
private Quest quest;
public KnightOfTheRoundTable(String name) {
this.name = name;
}
public Object embarkOnQuest() throws QuestFailedException {
return quest.embark();
}
public void setQuest(Quest quest) {
this.quest = quest;
}
public String getName() {
return name;
}
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="quest"
class="com.springinaction.chapter01.knight.HolyGrailQuest"/>
<bean id="knightTarget"
class="com.springinaction.chapter01.knight.KnightOfTheRoundTable">
<property name="name" value="hello"/>
<property name="quest">
<ref bean="quest"/>
</property>
</bean>
</beans>
public class KnightApp {
public static void main(String[] args) throws Exception {
工場// =たBeanFactory BeanをロードするためのたBeanFactoryは、実際には春のコンテナ
新しい新しいXmlBeanFactoryに(FileSystemResource新新(「knight.xmlを」));
Knight knight =
(Knight) ctx.getBean("knight");
knight.embarkOnQuest();
}
}
上記のXML属性は、IDは、BeanクラスknightTargetにその位置を示し、プロパティ属性を指し、完全な組立プロセスを与えます。<プロパティ名=「名前」値=「こんにちは」/>これは、クラスではなく、単純な文字列であるため、Bean名「名前」属性値注入「hello」を、そして次のプロパティが存在することを意味そう、「クエスト」にプロパティを与える豆の中に注入され、それは豆の開始定義名「クエスト」の前にあります
ます。https://my.oschina.net/secyaher/blog/274432で再現