ความแตกต่างระหว่างถั่วสปริงซิงเกิลและรูปแบบซิงเกิลตันคือพวกเขาเกี่ยวข้องกับสภาพแวดล้อมที่แตกต่างกัน รูปแบบ Singleton อ้างถึงอินสแตนซ์เดียวในกระบวนการ JVM ในขณะที่ Spring Singleton อ้างถึงเพียงอินสแตนซ์เดียวในคอนเทนเนอร์ Spring Bean (ApplicationContext)
ก่อนอื่นให้ดูรูปแบบซิงเกิล ในกระบวนการ JVM (ในทางทฤษฎีโปรแกรม Java ที่กำลังดำเนินการจะต้องมี JVM อิสระของตัวเอง) มีเพียงอินสแตนซ์เดียวดังนั้นไม่ว่าอินสแตนซ์จะได้รับในโปรแกรมใดวัตถุเดียวกันจะถูกส่งคืนเสมอ การใช้รันไทม์ในตัวใน Java เป็นตัวอย่าง (การแจงนับเป็นแนวปฏิบัติที่ดีที่สุดของรูปแบบซิงเกิลตัน) ไม่ว่าเวลาและที่ใดจะได้รับการตัดสินต่อไปนี้เป็นความจริงเสมอ:
// ขึ้นอยู่กับโหมดขี้เกียจ // มีเพียงหนึ่งอินสแตนซ์เดียวในอินสแตนซ์ jvm runtime.getRuntime () == runtime.getRuntime ()
ในทางตรงกันข้ามถั่วซิงเกิลของฤดูใบไม้ผลิเกี่ยวข้องอย่างใกล้ชิดกับคอนเทนเนอร์ของพวกเขา (ApplicationContext) ดังนั้นในกระบวนการ JVM หากมีคอนเทนเนอร์สปริงหลายตัวแม้แต่ถั่วซิงเกิลจะสร้างหลายกรณีอย่างแน่นอน ตัวอย่างรหัสมีดังนี้:
// ApplicationContext contitress_1 = ใหม่ filesystemxmlapplicationContext ("classpath: /applicationcontext.xml"); Person Yiifaa_1 = context_1.getBean ("yiifaa", person.class); // spring bean container applicationcontext context_2 = ใหม่ filesystemxmlapplicationContext ("classpath: /applicationcontext.xml"); บุคคล yiifaa_2 = context_2.getBean ("yiifaa", person.class); // นี่ไม่เท่ากันแน่นอนเพราะหลายอินสแตนซ์ถูกสร้างขึ้น system.out.println (yiifaa_1 == yiifaa_2);นี่คือไฟล์การกำหนดค่าสปริง:
<!-แม้ว่าจะมีการประกาศว่าเป็นซิงเกิลตันอินสแตนซ์หลายกรณีจะถูกสร้างขึ้นตราบเท่าที่มีคอนเทนเนอร์หลายตัว-> <bean id = "yiifaa" ขอบเขต = "singleton"> <constructor-Arg name = "ชื่อผู้ใช้">
สรุป
ถั่วซิงเกิลของฤดูใบไม้ผลิเกี่ยวข้องอย่างใกล้ชิดกับภาชนะจัดการถั่วฤดูใบไม้ผลิ แต่ละคอนเทนเนอร์จะสร้างอินสแตนซ์ที่เป็นเอกลักษณ์ของตัวเองดังนั้นจึงแตกต่างจากรูปแบบ Singleton ในรูปแบบการออกแบบ GOF อย่างไรก็ตามในแอปพลิเคชันจริงหากวงจรชีวิตของวัตถุถูกส่งมอบอย่างสมบูรณ์ไปยังการจัดการฤดูใบไม้ผลิ (ไม่ได้สร้างขึ้นโดยใหม่การสะท้อน ฯลฯ ที่อื่น ๆ ) ผลของรูปแบบ Singleton สามารถทำได้จริง
ข้างต้นเป็นเรื่องเกี่ยวกับบทความนี้ที่หารือเกี่ยวกับความแตกต่างระหว่าง Spring Singleton Bean และ Singleton Model ฉันหวังว่ามันจะเป็นประโยชน์กับทุกคน เพื่อนที่สนใจสามารถอ้างถึงหัวข้ออื่น ๆ ที่เกี่ยวข้องในเว็บไซต์นี้ต่อไป หากมีข้อบกพร่องใด ๆ โปรดฝากข้อความไว้เพื่อชี้ให้เห็น ขอบคุณเพื่อนที่ให้การสนับสนุนเว็บไซต์นี้!