5

Zastanawiam się, jaka jest różnica między @Inject & @Autowired , kiedy użyć każdego?, Lub robią to samo?Jaka jest różnica między @Inject i @Autowired

i jeśli mam fasoli sprężyny, które mają zakres:

@Service 
@Scope("singleton") 

mogę zrobić Dependency Injection za to zarówno bez problemów?

z góry dzięki.

Odpowiedz

6

Jak o czytanie the documentation?

JSR 330 za @Inject adnotacji można stosować zamiast sprężyny @Autowired w poniższych przykładach. @Inject nie ma wymaganej właściwości w przeciwieństwie do adnotacji Spring @Autowired, która ma wymaganą właściwość , aby wskazać, czy wstrzykiwana wartość jest opcjonalna. To zachowanie jest włączane automatycznie, jeśli posiadasz JSR 330 JAR w ścieżce klasy .

2

myślę, że warto zwrócić uwagę, że jeśli używasz @Autowired, tworzysz zależność na wiosnę, gdzie przy użyciu @Inject, będzie można zamienić na inną zależność ram wtrysku, który obsługuje JSR 330.

+0

więcej wyjaśnień proszę? –

+0

Gdzie potrzebujesz więcej wyjaśnień? –

+0

o używaniu @Inject w aplikacji na wiosnę i czy jest to problem czy zła praktyka? –

0

1) @Inject - Zdefiniowany w pakiecie javax.inject i części Java.

2) @Autowired - Zdefiniowany w pakiecie org.springframework.bean.factory i część struktury Spring.

0

Pierwszy, @Autowired jest zdefiniowany przez Spring Framework ale @Inject pochodziła z "Dependency Injection for Java" (JSR-330)”

drugie, @Inject nie bierze wymagany atrybut więc jeśli nie udaje się znaleźć żadnego ziarna, to nie jest błąd, ale może pochodzić z @Autowired wymagane = false i pozwoli pole pustych.

trzecie, Advantage @Inject adnotacji jest, że zamiast wstrzykiwać bezpośrednio odniesienie , możesz poprosić @Inject o wstrzyknięcie dostawcy. Interfejs dostawcy umożliwia między innymi leniwe wstrzykiwanie odniesień do fasoli i wstrzykiwanie wielu wystąpień fasoli.

Powiązane problemy