@Autowired
анотація визначена у рамках весни.
@Inject
анотація - це стандартна анотація, яка визначена в стандарті "Ін'єкція залежності для Java" (JSR-330) . Весна (починаючи з версії 3.0) підтримує узагальнену модель введення залежності, яка визначена в стандарті JSR-330. ( Рамки Google Guice та рамка Picocontainer також підтримують цю модель).
З @Inject
можна вводити посилання на реалізацію Provider
інтерфейсу, що дозволяє вводити відкладені посилання.
Анотації @Inject
та @Autowired
- майже повні аналогії. Крім @Autowired
анотації, @Inject
анотація може використовуватися для властивостей, методів та конструкторів автоматичного зв’язування.
На відміну від @Autowired
анотації, @Inject
анотація не має required
атрибутів. Тому, якщо залежності не знайдеться - буде викинуто виняток.
Існують також відмінності в уточненнях властивостей зв’язування. Якщо у виборі компонентів для ін'єкцій є неоднозначність, @Named
слід додати кваліфікуючого. У аналогічній ситуації до @Autowired
анотації буде доданий @Qualifier
кваліфікувач (JSR-330 визначає власну @Qualifier
анотацію і за допомогою цього класифікатора @Named
визначається анотація ).