همانطور که مشخص است کد نوشته شده در روش Field injection کوتاه تر از روش Constructor Injection است و به پارامتر Constructor و ... نیازی نیست اما مشکل آن این است که Dependency کلاس مخفی است و از بیرون کلاس مشخص نیست کلاس Checkout به کلاس ShoppingCart وابستگی دارد. مشکل دیگر روش Field injection در زمان تست است، ما حتی برای نوشتن یک تست ساده هم برای satisfy کردن Dependency کلاس Checkout باید از reflection یا یک DI framework استفاده کنیم.
درست است برای روش Constructor Injection باید کد بیشتری نوشته شود ولی چون Dependency های کلاس در سطح Constructor بیان می شود مشکلات Field injection را ندارند و فقط با نگاه کردن به Constructor کلاس، وابستگی های کلاس مشخص می شود. عیب روش Constructor Injection این است که satisfy کردن تمام Dependency ها اجباری است و Dependency اختیاری با آن قابل پیاده سازی نیست. برای Dependency های اختیاری نیز روش Setter Injection پیشنهاد می شود. در روش Setter Injection از متد های setter یک فیلد برای Injection کردن Dependency استفاده می شود.