Avatar ·

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

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