ภาพรวม
ฉีดฤดูใบไม้ผลิถั่วยังเป็นที่รู้จักกันแพร่หลายเป็น 'พึ่งพาการฉีด (ของ)’. หัวใจของกรอบฤดูใบไม้ผลิเป็น 'ผกผันของการควบคุม (IoC)’ และ DI เป็นส่วนการดำเนินงานของ IoC. เราจะเริ่มต้นการสนทนาของเราด้วยสมมติฐานที่ว่าแนวคิดและวัตถุประสงค์ของ IoC และ DI คือรู้อยู่แล้วว่า.
In this article, เราจะเน้นประเภทที่แตกต่างกันของการฉีดถั่ว Spring มีตัวอย่างการเข้ารหัสบางส่วนในทางปฏิบัติ.
พึ่งพาการฉีด
ฉีดถั่ว Spring สามารถดำเนินการในสองวิธีที่สำคัญ, หนึ่งเป็นที่รู้จักกันสร้าง DI-based และอีกคนหนึ่งเป็นที่รู้จักกันเป็น Di Setter ตาม. ในส่วนย่อยต่อไปนี้เราจะตรวจสอบวิธีการเหล่านี้สามารถทำได้.
คอนสตรัคตาม DI
ใน DI คอนสตรัคตาม, อ้างอิงถูกฉีดผ่านการก่อสร้าง. ข้อโต้แย้งของผู้สร้างแต่ละคนเป็นพึ่งพาวัตถุ / ถั่ว. ภาชนะฤดูใบไม้ผลิจะเรียกก่อสร้างที่มีข้อโต้แย้ง.
ขอให้เราตรวจสอบตัวอย่างหนึ่ง. มีสองชั้นเรียน, one is the ประเทศ การเรียนและอื่น ๆ หนึ่งเป็น สถานะ ชั้น. The ประเทศ ชั้นจะมีการพึ่งพาการ สถานะ ชั้น. So, เราจะผ่านการพึ่งพาไป ประเทศ ระดับผ่านคอนสตรัคของมัน (ที่แสดงด้านล่าง).
Listing 1: ระดับประเทศ
com.techalpine.spring แพคเกจ;
สาธารณะคุณภาพระดับประเทศ {
รัฐรัฐภาคเอกชน;
ประเทศสาธารณะ(รัฐรัฐ) {
System.out.println(“คอนสตรัคในประเทศ” );
this.state = รัฐ;
}
stateName โมฆะสาธารณะ() {
state.stateName();
}
}
Now, พึ่งพานี้สามารถใช้ในการเรียกวิธีการที่แตกต่างกัน.
ต่อไปนี้เป็น สถานะ โค้ดระดับ.
Listing 2: ระดับรัฐ
com.techalpine.spring แพคเกจ;
รัฐระดับประชาชน {
กองกลาง(){
System.out.println(“ภายในรัฐคอนสตรัค” );
}
stateName โมฆะสาธารณะ() {
System.out.println(“ภายในชื่อรัฐ: West Bengal”);
}
}
ต่อไปนี้คือการตั้งค่าไฟล์ XML เพื่อลวดถั่วเหล่านั้นและการอ้างอิงของพวกเขา. รหัสถั่ว ('stateBean') of the สถานะ ชั้นถูกนำมาใช้เป็นข้อมูลอ้างอิงอาร์กิวเมนต์คอนสตรัคใน ประเทศ การกำหนดระดับถั่ว. Now, ถั่วจะมีการกำหนดและแบบใช้สายเข้าด้วยกัน.
Listing 3: การตั้งค่าไฟล์ XML
<?xml version=”1.0″ encoding=”UTF-8″?>
<ถั่ว xmlns =”ที่ http://www.springframework.org/schema/beans”
xmlns:xsi=”ที่ http://www.w3.org/2001/XMLSchema-instance”
xsi:schemaLocation=”ที่ http://www.springframework.org/schema/beans
ที่ http://www.springframework.org/schema/beans/spring-beans-3.2.xsd”>
<!– ความหมายสำหรับประเทศถั่ว –>
<ถั่ว id =”countryBean” class =”com.techalpine.spring.Country”>
<คอนสตรัค-Arg เตะ =”stateBean”/>
</ถั่ว>
<!– ความหมายสำหรับรัฐถั่ว –>
<ถั่ว id =”stateBean” class =”com.techalpine.spring.State”>
</ถั่ว>
</ถั่ว>
ต่อไปนี้เป็นชั้นหลักในการทดสอบตัวสร้างตามฉีดถั่ว.
Listing 4: ไฟล์โปรแกรมหลัก
com.techalpine.spring แพคเกจ;
นำเข้า org.springframework.context.ApplicationContext;
นำเข้า org.springframework.context.support.FileSystemXmlApplicationContext;
TestBeanInjection เรียนสาธารณะ {
ประชาชนเป็นโมฆะหลักแบบคงที่(เชือก[] args) {
ApplicationContext บริบท = FileSystemXmlApplicationContext ใหม่(
“WebContent / WEB-INF / beanConfig.xml”);
ประเทศ countryobj = (ประเทศ)context.getBean(“countryBean”);
countryobj.stateName();
}
}
Now, เรียกชั้นเป็นโปรแกรมแบบสแตนด์อะโลนและมันจะแสดงผลลัพธ์ต่อไปนี้บนคอนโซล.
ภายในรัฐคอนสตรัค
คอนสตรัคในประเทศ
ภายในชื่อรัฐ: West Bengal
ชุดฐาน DI
ใน DI Setter ตาม, อ้างอิงจะถูกส่งผ่านด้วยวิธีการตั้งค่า. ภาชนะฤดูใบไม้ผลิจะเรียกวิธีการตั้งค่าเหล่านั้นเพื่อยกตัวอย่างถั่ว. Here, กลไกและส่วนประกอบเกือบจะคล้ายกับ DI คอนสตรัคตาม. ความแตกต่างเพียงอย่างเดียวคือ, ในการผ่านการอ้างอิงและการกำหนดค่าของ XML. ในการฉีด Setter ตาม, <คุณสมบัติ> แท็กจะถูกนำมาใช้แทน <คอนสตรัค-หาเรื่อง> tag.
ข้อสรุป
ในบทความนี้เราได้อธิบายวิธีการที่ว่าถั่วฤดูใบไม้ผลิสามารถฉีด. ไม่มีกฎที่ชัดเจนเมื่อจะใช้ DI Setter หรือคอนสตรัคที่ใช้เป็น. โดยทั่วไปเราไปสำหรับการสร้างตาม DI เมื่ออ้างอิงมีผลบังคับใช้, และเลือก Setter ตาม DI เมื่ออ้างอิงเป็นตัวเลือก. แต่การรวมกันของทั้งสองจะได้รับอนุญาต.