..
ใช้พึ่งพาการฉีดสร้างสามารถนำไปสู่การสร้างการอ้างอิงเป็นวงกลมระหว่างถั่ว ตัวอย่างเช่นถ้าส่วนหัวของเรื่องออกจะต้องมีการยกตัวอย่างถึง B วัตถุ แต่ในเวลาเดียวกันวัตถุ B วัตถุที่ต้องการจะสร้างการอ้างอิงที่ไม่สามารถแก้ไขได้โดยใช้ฉีดพึ่งพา constructor
ในกรณีเช่นนี้คุณต้องใช้ Setter พึ่งพาการฉีดจะคล้ายกับการสร้าง แต่แตกต่างอยู่ในความจริงที่ว่าจะฉีดขึ้นหลังจากที่วัตถุถูก instantiated นี่คือตัวอย่าง :
{สาธารณะ Bean2 ชั้น
genericService GenericService เอกชน
setGenericService โมฆะสาธารณะ (GenericService genericService) {
this.genericService = genericService;
}
getGenericService GenericService สาธารณะ () {
genericService กลับ;
}
/ **
ตรรกะทางธุรกิจ * .............
* /
}
nell'applicationContext. XML
<bean id="setterBean" class="it.mrwebmaster.di.setter.Bean2"> <property name="genericService" ref="genericService" /> <Bean />
นอกเหนือจากการแก้ปัญหาของการ dipenze Setter วงกลมพึ่งพาการฉีดยังสามารถกำหนดค่าใหม่ที่รันไทม์ถั่วสำหรับเหตุผลเหล่านี้เป็นที่ต้องการเพื่อสร้าง บางโรงเรียนของความคิด แต่คนบอกว่าดีที่จะใช้ entrabe : สร้างสำหรับการอ้างอิงที่จำเป็นและ setters สำหรับตัวเลือกเหล่านั้น จะแนะนำให้ใช้ setter ในขณะที่มันหายากมากที่มีการอ้างอิงตัวเลือก
นอกจากนี้ยังใช้พื้นฐานของ DI, มีคุณสมบัติอื่น ๆ ที่มีฤดูใบไม้ผลิเช่นสตริงว่างเปล่าหรือคุณสามารถฉีดเขตข้อมูล Null :
<--! ค่า NULL 1 --> <bean id="nullBean1" class="it.mrwebmaster.di.constructor.bean" factory-method="createBean"> <constructor-arg type="java.lang.Integer" value="0" /> <constructor-arg type="java.lang.String" value="" /> <constructor-arg type="it.mrwebmaster.di.constructor.GenericService"> <null/> </ constructor - Arg> <Bean /> <--! NULL VALUE 2 --> <bean id="nullBean2" class="it.mrwebmaster.di.setter.Bean2"> <property name="genericService"> <null/> </ Property> <Bean />
ฤดูใบไม้ผลิยังมีคอลเลกชันของรายการประเภทการจัดการ, ชุด, แผนที่, คุณสมบัติและผ่านรายการแท็กที่ตั้ง, แผนที่, และ props :
{สาธารณะ CollectionBean ชั้น
รายชื่อ <GenericService> ส่วนตัว beanList;
beanProps คุณสมบัติส่วนตัว;
<string> beanSet เอกชนกันยายน;
แผนที่ส่วนตัว <Integer, beanMap string>;
/ **
ตรรกะทางธุรกิจ * ......................
* /
รายชื่อ <GenericService> getBeanList สาธารณะ () {
beanList กลับ;
}
แผนที่ <Integer, สาธารณะ string> getBeanMap () {
beanMap กลับ;
}
getBeanProps สมบัติสาธารณะ () {
beanProps กลับ;
}
<string> ชุดสาธารณะ getBeanSet () {
beanSet กลับ;
}
setBeanList โมฆะสาธารณะ (รายการ <GenericService> beanList) {
this.beanList = beanList;
}
เป็นโมฆะ setBeanMap สาธารณะ (แผนที่ beanMap string> <Integer,) {
beanMap this.beanMap =;
}
setBeanProps โมฆะสาธารณะ (beanProps คุณสมบัติ) {
this.beanProps beanProps =;
}
setBeanSet โมฆะสาธารณะ (beanSet <string> ตั้ง) {
this.beanSet = beanSet;
}
}
nell'applicationContext. XML
<-- คอลเลกชัน Bean -->
<bean id="collectionBean" class="it.mrwebmaster.di.collection.CollectionBean">
<--! LIST -->
name="beanList"> <property
<list>
bean="genericService"/> <ref
<รายการ />
</ Property>
<--! Properties -->
name="beanProps"> <property
<props>
<prop key="prop1"> value1 <prop />
<prop key="prop2"> value2 <prop />
<prop key="prop3"> Value3 <prop />
</ Props>
</ Property>
<-- ชุด -->
name="beanSet"> <property
<SET>
<value> ไป </ ค่า>
<value> b </ ค่า>
</> ตั้ง
</ Property>
<-- แผนที่ -->
name="beanMap"> <property
<map>
<entry key="1" value="value1" />
<แผนที่ />
</ Property>
<Bean />
มันใบผู้อ่านที่มีความลึกในประเด็นอื่น ๆ เช่นคอลเลกชันของการผสานที่ถั่วภายในและทำงานร่วมกัน
| |
ลินุกซ์ (หลักสูตร)
คู่มือที่สมบูรณ์ในระบบเปิดแหล่งที่มา จาก 49 € |
| |
PHP (หลักสูตร)
หลักสูตรเต็มสำหรับการสร้างเว็บไซต์แบบไดนามิก จาก 49 € |
| |
Ruby และ Ruby on Rails (หลักสูตร)
สร้างโปรแกรมซอฟต์แวร์และเว็บด้วยทับทิมและ ร. จาก 39 € |