Avatar ·

@Inject و @Autowired في Spring: ما الفرق وماذا تختار؟

مرحبًا! لقد بدأت في تعلم Spring Framework وأكتب تطبيقي الأول. واجهت ارتباكًا مع التعليقات التوضيحية (annotations) لحقن التبعيات (Dependency Injection). أرى أنه في بعض الأمثلة يستخدمون @Autowired، وفي أخرى يستخدمون @Inject. كلا التعليقين يبدو أنهما يفعلان نفس الشيء: إدخال الـ beans في الحقول (fields) أو المنشئات (constructors) أو الـ setters. إليك مثال من الكود الخاص بي حيث أستخدم @Autowired: ```java @Component public class UserService { @Autowired private UserRepository userRepository; public User findUser(Long id) { return userRepository.findById(id); } } ``` لكن زميلي قال إنه من الأفضل استخدام @Inject من الحزمة javax.inject. يدّعي أن هذا نهج "أنقى"، لكنه لم يستطع شرح السبب بوضوح. لقد بحثت في Google ووجدت الكثير من المعلومات المتناقضة. البعض يكتب أن