@Autowired
аннотация определена в среде Spring.
@Inject
аннотация - это стандартная аннотация, которая определена в стандарте «Внедрение зависимостей для Java» (JSR-330) .Spring (начиная с версии 3.0) поддерживает обобщенную модель внедрения зависимостей, которая определена в стандарте JSR-330.( Каркасы Google Guice и Каркас Picocontainer также поддерживают эту модель).
С помощью @Inject
можно вставить ссылку на реализацию интерфейса Provider
,что позволяет вводить отложенные ссылки.
Аннотации @Inject
и @Autowired
- это практически полные аналогии.Как и аннотация @Autowired
, аннотация @Inject
может использоваться для свойств, методов и конструкторов автоматического связывания.
В отличие от аннотации @Autowired
, аннотация @Inject
не имеет атрибута required
.Поэтому, если зависимости не будут найдены - будет сгенерировано исключение.
Существуют также различия в пояснениях свойств привязки.Если в выборе компонентов для впрыска есть неопределенность, следует добавить классификатор @Named
.В аналогичной ситуации для аннотации @Autowired
будет добавлен квалификатор @Qualifier
(JSR-330 определяет свою собственную аннотацию @Qualifier
и с помощью этой аннотации определителя определяется @Named
).