В чем разница между @Inject и @Autowired в Spring Framework? Какой использовать при каких условиях?

Использовать библиотеку Apache Commons .

Класс: org.apache.commons.io.input.BOMInputStream

Пример использования:

String defaultEncoding = "UTF-8";
InputStream inputStream = new FileInputStream(someFileWithPossibleUtf8Bom);
try {
    BOMInputStream bOMInputStream = new BOMInputStream(inputStream);
    ByteOrderMark bom = bOMInputStream.getBOM();
    String charsetName = bom == null ? defaultEncoding : bom.getCharsetName();
    InputStreamReader reader = new InputStreamReader(new BufferedInputStream(bOMInputStream), charsetName);
    //use reader
} finally {
    inputStream.close();
}

635
задан Mahozad 21 June 2018 в 21:28
поделиться

1 ответ

аннотация @Autowired используется для автопроводного соединения в платформе Spring. На самом деле автопроводное соединение является процессом на который зависимости от фигуры платформы Spring боба Spring, вместо Вас, разработчика, явно указывая их в файле контекста приложения. Можно аннотировать поля и конструктора, использующего @Autowired, чтобы сказать платформе Spring находить зависимости для Вас.

аннотация @Inject также служит той же цели. аннотация @Inject является частью стандартного JSR-330: Внедрение зависимости для Java, но основное различие между ними состоит в том, что @Inject является стандартной аннотацией для внедрения зависимости, и @Autowired является конкретной пружиной. Таким образом, если Вы не хотите Spring определенные аннотации и хотите пойти со стандартной аннотацией, затем используют @Inject.

Ключевые Факты

  • первое и наиболее важное различие - то, что @Inject аннотация только доступна от Spring 3.0 вперед, поэтому если Вы хотите использовать управляемое аннотацией внедрение зависимости в Spring 2.5 затем, необходимо использовать @Autowired аннотацию.
  • второе различие между этими двумя аннотациями - то, что в отличие от @Autowired Spring, @Inject не требует 'необходимого' атрибута.
  • аннотация @Inject портативный. С тех пор @Autowired это характерно для платформы Spring, необходимо будет повторно реализовать целую логику введения зависимости, даже если приложение останется неизменным.

следующая статья Baeldung продемонстрирует использование аннотаций, связанных с внедрением зависимости, а именно, @Resource, @Inject, и @Autowired аннотаций.

Проводное соединение в Spring: @Autowired, @Resource и @Inject

1
ответ дан 22 November 2019 в 21:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: