В чем разница между @Inject и @Autowired? - PullRequest
6 голосов
/ 27 сентября 2011

мне просто интересно, в чем разница между @Inject и @Autowired когда использовать каждый?, или они делают то же самое?

, и если у меня есть боб, у которого есть область действия:

@Service
@Scope("singleton")

Могу ли я сделать инъекцию зависимости без проблем?

спасибо заранее.

Ответы [ 4 ]

7 голосов
/ 27 сентября 2011

Из того, что я знаю, они делают то же самое. @Inject - это аннотация из javax.inject, который является только API для внедрения зависимостей. В Spring вы можете использовать оба, так как я думаю, что Spring предоставляет реализацию для @Inject, которая делает то же самое, что и @Autowired в средах Spring.

Матиас Вессендорф писал об этом здесь: http://matthiaswessendorf.wordpress.com/2010/04/20/spring-3-0-and-jsr-330-part-2/

6 голосов
/ 27 сентября 2011

Как насчет чтения документации ?

Аннотацию @Inject JSR 330 можно использовать вместо Spring @Autowired в примерах ниже. @Inject не имеет обязательного свойство в отличие от аннотации SpringAutowired, которая имеет обязательный свойство, указывающее, является ли вводимое значение необязательным. это поведение включается автоматически, если у вас есть JSR 330 JAR на CLASSPATH.

2 голосов
/ 27 сентября 2011

Я думаю, что стоит отметить, что если вы используете @Autowired, вы создаете зависимость от Spring, где с помощью @Inject вы сможете поменять другую инфраструктуру внедрения зависимостей, которая поддерживает JSR 330.

0 голосов
/ 01 ноября 2017

Первый , @Autowired определяется Spring Framework, но @Inject получен из «Внедрения зависимостей для Java» (JSR-330) «

Второй , @Inject не принимает обязательный атрибут, поэтому, если ему не удается найти какой-либо bean-компонент, он завершится с ошибкой, но @Autowired может прийти с required = false и позволит пустое поле.

Третий Преимущество аннотации @Inject заключается в том, что вместо непосредственного внедрения ссылки вы можете попросить @Inject ввести поставщика. Интерфейс поставщика позволяет, среди прочего, лениво внедрять ссылки на компоненты и вводить несколько экземпляров компонента.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...