2
ค่อยๆย้าย codebase ไปยังคอนเทนเนอร์ฉีดที่ต้องพึ่งพา
ฉันมี codebase ขนาดใหญ่ที่มีซิงเกิล "anti-pattern" จำนวนมากคลาสยูทิลิตี้ที่มีวิธีการคงที่และคลาสที่สร้างการอ้างอิงของตนเองโดยใช้newคำหลัก มันทำให้รหัสยากมากที่จะทดสอบ ฉันต้องการที่จะโยกย้ายรหัสไปยังภาชนะฉีดพึ่งพา (ในกรณีของฉันมันGuiceเพราะมันเป็นGWTโครงการ) จากความเข้าใจของฉันเกี่ยวกับการฉีดขึ้นอยู่กับมันทั้งหมดหรือเปล่า คลาสทั้งหมดได้รับการจัดการโดย Spring / Guice หรือไม่ เนื่องจาก codebase มีขนาดใหญ่ฉันไม่สามารถแปลงรหัสข้ามคืนได้ ดังนั้นฉันต้องการวิธีที่จะทำมันค่อยๆ ปัญหาคือเมื่อฉันเริ่มต้นด้วยคลาสที่ต้องถูกฉีดเข้าไปในคลาสอื่นฉันไม่สามารถใช้วิ@Injectในคลาสเหล่านั้นได้เนื่องจากคลาสเหล่านั้นยังไม่ได้รับการจัดการโดยคอนเทนเนอร์ ดังนั้นสิ่งนี้จะสร้างสายโซ่ยาวขึ้นไปถึงคลาส "สุดยอด" ที่ไม่ได้ถูกฉีดเข้าไปที่ใดก็ได้ วิธีเดียวที่ฉันเห็นคือการทำให้Injectorบริบท / แอปพลิเคชันทั่วโลกพร้อมใช้งานผ่านซิงเกิลตันในขณะนั้นเพื่อให้คลาสอื่นสามารถรับถั่วที่ถูกจัดการได้ แต่มันขัดแย้งกับแนวคิดสำคัญที่ไม่เปิดเผยcomposition rootแอปพลิเคชัน อีกวิธีคือล่างขึ้นบน: เริ่มต้นด้วยคลาส "ระดับสูง" รวมไว้ในคอนเทนเนอร์ฉีดขึ้นต่อกันและค่อย ๆ เลื่อนลงไปที่คลาส "เล็ก" แต่ฉันต้องรอเป็นเวลานานเนื่องจากฉันสามารถทดสอบชั้นเรียนขนาดเล็กที่ยังคงขึ้นอยู่กับกลม / สถิตยศาสตร์ อะไรจะเป็นวิธีที่จะทำให้เกิดการย้ายถิ่นฐานอย่างค่อยเป็นค่อยไป? ป.ล. คำถามที่ค่อยเป็นค่อยไปวิธีการฉีดพึ่งพาจะคล้ายกันในชื่อ แต่ไม่ตอบคำถามของฉัน