Autowiring قابلیتی در Dependency Injection Container است که وابستگیهای یک کلاس را با بررسی سازنده و نوع پارامترها، بدون تعریف دستی تکتک Bindingها تشخیص میدهد و ایجاد میکند.
اگر وابستگی مبهم باشد یا چند پیادهسازی از یک Interface وجود داشته باشد، معمولاً باید Binding صریح تعریف شود. Autowiring ساخت نمونهها را ساده میکند، اما جایگزین طراحی درست وابستگیها نیست.
مثالی از مسیر اجرای برنامه
وقتی سازنده یک سرویس پارامتری از نوع LoggerInterface دارد، Container در صورت وجود Binding مناسب میتواند پیادهسازی را خودش پیدا کند. بدون Binding مشخص، Interface معمولاً قابل نمونهسازی نیست.
درک تفاوت این موضوع با تزریق وابستگی و وارونگی کنترل به انتخاب راهکار مناسبتر کمک میکند.
اتصال خودکار چه وقت شکست میخورد؟
اگر سازنده کلاس یک Interface بگیرد و کانتینر نداند کدام پیادهسازی را بسازد، خطای Resolution رخ میدهد. در این وضعیت باید Binding مشخصی در Container تعریف شود. Autowiring جایگزین طراحی قرارداد مناسب نیست.