@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 ووجدت الكثير من المعلومات المتناقضة. البعض يكتب أن