در مجموع فیلد autowiring بهترین نوع injection نیست چرا که نوشتن تست را سخت می کند و شما را به سمت کدهای unsafe هدایت می کند به مثال زیر توجه کنید ولی کار اشتباهی هم نیست و شما می توانید اینکار را انجام دهید نمونه کد injection در سرولت با اسپرینگ رو از اینجا می تونید ببینید.
public class MyComponent{
@autowired
DependecyComponent dep;
}
حالا ممکنه یه برنامه نویسی بیاد و اینکار رو انجام بده
MyComponent mc = new MyComponent();
در اینصورت فیلد مورد نظر null میشه و شما هر آن ممکنه nullpointerexception بگیرید گرچه این وظیفه ی اسپرینگ است که تایپ safe باشه ولی این فریم ورک اونقدر باهوش نیست که این لطف رو در حق شما بکنه فریم ورک های دیگر مثل Weld CDI تایپ safe هستند. اما چون کسی سرولت رو instansiate نمی کنه اینکار مشکلی نداره بیشتر از constructor injection استفاده کنید .
public class MyComponent{
@Autowired
public MyComponent(DependencyComponent dep){
}
}