ฤดูใบไม้ผลิรู้ได้อย่างไรว่าควรใช้ polymorphic ประเภทใด
ตราบใดที่มีการใช้งานอินเทอร์เฟซเพียงครั้งเดียวและการใช้งานนั้นมีการใส่คำอธิบายประกอบด้วยการ@Component
เปิดใช้งานการสแกนคอมโพเนนต์ของสปริงเฟรมเวิร์กสปริงสามารถหาคู่ (อินเตอร์เฟสการใช้งาน) หากไม่ได้เปิดใช้งานการสแกนส่วนประกอบคุณต้องกำหนด bean อย่างชัดเจนใน application-config.xml (หรือไฟล์กำหนดค่าสปริงที่เทียบเท่า)
ฉันต้องการ @Qualifier หรือ @Resource หรือไม่
เมื่อคุณมีการนำไปใช้มากกว่าหนึ่งรายการคุณจะต้องผ่านการรับรองแต่ละรายการและระหว่างการเดินสายอัตโนมัติคุณจะต้องใช้@Qualifier
คำอธิบายประกอบเพื่อแทรกการใช้งานที่ถูกต้องพร้อมกับ@Autowired
คำอธิบายประกอบ หากคุณกำลังใช้ @Resource (ซีแมนทิกส์ J2EE) คุณควรระบุชื่อถั่วโดยใช้name
แอตทริบิวต์ของคำอธิบายประกอบนี้
เหตุใดเราจึงสอบถามอินเตอร์เฟซโดยอัตโนมัติ
ประการแรกมันเป็นแนวปฏิบัติที่ดีในการใช้โค้ดกับอินเตอร์เฟสโดยทั่วไป ประการที่สองในกรณีของฤดูใบไม้ผลิคุณสามารถฉีดการใช้งานใด ๆ ที่รันไทม์ กรณีการใช้งานทั่วไปคือการฉีดใช้งานจำลองในระหว่างขั้นตอนการทดสอบ
interface IA
{
public void someFunction();
}
class B implements IA
{
public void someFunction()
{
//busy code block
}
public void someBfunc()
{
//doing b things
}
}
class C implements IA
{
public void someFunction()
{
//busy code block
}
public void someCfunc()
{
//doing C things
}
}
class MyRunner
{
@Autowire
@Qualifier("b")
IA worker;
....
worker.someFunction();
}
การกำหนดค่า bean ของคุณควรมีลักษณะเช่นนี้:
<bean id="b" class="B" />
<bean id="c" class="C" />
<bean id="runner" class="MyRunner" />
อีกทางเลือกหนึ่งถ้าคุณเปิดใช้งานการสแกนส่วนประกอบบนแพ็คเกจที่มีสิ่งเหล่านี้อยู่คุณควรทำให้แต่ละคลาสมีคุณสมบัติ@Component
ดังนี้:
interface IA
{
public void someFunction();
}
@Component(value="b")
class B implements IA
{
public void someFunction()
{
//busy code block
}
public void someBfunc()
{
//doing b things
}
}
@Component(value="c")
class C implements IA
{
public void someFunction()
{
//busy code block
}
public void someCfunc()
{
//doing C things
}
}
@Component
class MyRunner
{
@Autowire
@Qualifier("b")
IA worker;
....
worker.someFunction();
}
จากนั้นworker
ในการจะได้รับการฉีดด้วยตัวอย่างของการพิมพ์MyRunner
B