2017-05-10 1 views
0

Ich habe viele Beiträge sowohl online als auch SO gelesen, aber mir ist immer noch nicht klar, welche Annotation für die Injektion eines EJB verwendet werden soll.Welche Methode wird zum Injizieren von EJB verwendet?

Kann man bitte führen, wenn zum Injizieren eines EJB der Annotation verwenden (und gegebenenfalls Vor- und Nachteile):

1) @EJB
2) @Resource
3) @Inject

Dies könnte eine grundlegende Frage sein, ich habe nach Antworten gesucht, aber ich bin nicht immer klar darüber.

+0

@Resource wird auch von Spring verwendet. Ich denke, es würde immer noch gelten, wenn Sie sich dafür entscheiden, POJOs anstelle von EJBs zu verwenden. – duffymo

Antwort

4

Ich habe noch nie irgendwo gesehen, dass Sie @Resource für die Injektion eines EJB verwenden können. Es könnte in einigen Servern funktionieren, aber es ist unwahrscheinlich, dass es tragbar ist.

Die Frage von @EJB vs @Inject ist komplizierter.

CDI und @Inject wurden der Java EE 6 Spezifikation hinzugefügt. Dort war es möglich @ EJBs in eine CDI Bean zu injizieren, aber nicht in zu vielen anderen (wenn überhaupt) Orten.

Die Java EE 7 Spezifikation vereinheitlicht dies im Wesentlichen bis zu dem Punkt, wo Sie @Inject oder @EJB austauschbar in den meisten (wenn nicht alle) Orten verwenden können. Im Wesentlichen mussten alle "Sub" -Spezifikationen wie die EJB-Spezifikation selbst, die Servlet-Spezifikation, JAX-WS, JAX-RS usw. aktualisiert werden, um die Verwendung von @Inject sowie @EJB zu unterstützen. Wenn Sie jedoch eines der Attribute angeben müssen, die in der @ EJB-Annotation verfügbar sind, sind diese unter @Inject nicht verfügbar.

Daher können Sie @Inject überall verwenden, wenn Sie in einer Java EE 7-kompatiblen Umgebung arbeiten und keine der @EJB-Attribute benötigen, andernfalls verwenden Sie @EJB.

Verwandte Themen