Inject and Resource and Autowired adnotations

Jaka jest różnica między @Inject i @Resource A @Autowired adnotacjami?

Kiedy powinniśmy użyć każdego z nich?
Author: ROMANIA_engineer, 2013-12-08

3 answers

Różnica między @ Inject vs. @ Autowire vs. @ Resource?

@Autowired: adnotacja właściwościowa springa (w przeciwieństwie do @Inject i @Resource), która wstrzykuje zasób według typu, tzn. według klasy interfejsu pola z adnotacją lub wykonawcy. W przypadku, gdy mamy kilka implementacji interfejsu lub podklasy, możemy zawęzić wybór za pomocą adnotacji @ Qualifier, aby uniknąć niejednoznaczności. W przypadku meczu rezerwowego nazwa fasoli jest uważana za domyślną kwalifikację wartość. Chociaż możesz użyć tej konwencji, aby odnieść się do konkretnych fasoli po nazwie, @Autowired zasadniczo dotyczy wtrysku typu z opcjonalnymi kwalifikatorami semantycznymi.

@Inject: Adnotacja oparta na JSR - 330 (Dependency Injection for Java) identyfikuje wstrzykiwalne konstruktory, metody i pola. Ta adnotacja jest prawie kompletnym zamiennikiem adnotacji Springa @ Autowired. Zamiast używać adnotacji @Autowired specyficznej dla wiosny, możesz wybrać użyj @Inject. Jedną z różnic między @Autowired i @Inject jest to, że @ Inject nie ma wymaganego pola, więc w przypadku, gdy nie znajdziemy odpowiedniego obiektu do inject, nie powiedzie się, podczas gdy @Autowired może użyć required=false i zezwolić na pole null (tylko jeśli jest wymagane!). Zaletą adnotacji @ Inject jest to, że zamiast wstrzykiwać odniesienie bezpośrednio, możesz poprosić @Inject o wstrzyknięcie dostawcy. Interfejs Provider umożliwia m.in. z wielu instancji fasoli. W przypadku, gdy mamy kilka implementacji interfejsu lub podklasy, możemy zawęzić wybór za pomocą adnotacji @ Named, aby uniknąć niejednoznaczności. @Named annotation działa podobnie jak Spring ' s @Qualifier

@Źródło: adnotacja oparta na JSR-250. @Resource jest dość podobny do @Autowired i @Inject, ale główną różnicą jest ścieżka wykonania pobrana, aby znaleźć wymaganą bean do inject. @ Resource zawęzi wyszukiwanie po nazwie następnie przez typ i na koniec przez kwalifikatory(ignorowane, jeśli dopasowanie zostanie znalezione po nazwie). @Autowired i @Inject zawężą wyszukiwanie najpierw przez typ, następnie przez kwalifikator, a na końcu przez nazwę.

 102
Author: Haim Raman,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-08-04 18:31:44
|------------|---------------|---------------|---------------|-----------------------|
|            | Setter/Field  | Constructor   | Applicable to | Matching order        |
|            | injection     | injection     | type          |                       |
|------------|---------------|---------------|---------------|-----------------------|
| @Autowired |       X       |       X       |               | Type, Qualifier, Name |
|------------|---------------|---------------|---------------|-----------------------|
| @Inject    |       X       |       X       |               | Type, Qualifier, Name |
|------------|---------------|---------------|---------------|-----------------------|
| @Resource  |       X       |               |       X       | Name, Type, Qualifier |
|------------|---------------|---------------|---------------|-----------------------|

Więc w Spring dependency injection @Inject i @Autowired mają dokładnie takie samo zachowanie.

 8
Author: eztam,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-07-04 09:57:59

Oprócz @Haim answer jest dobry opis różnicy między adnotacjami Spring i JSR-330 (Dependency Injection for Java) i jak używać ostatniego Z Spring.

 1
Author: Andriy Kryvtsun,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-04-18 16:42:54