157 votes

Dois-je utiliser @EJB ou @Inject

J'ai trouvé cette question: Quelle est la différence entre @Inject et @EJB mais je n'ai pas plus sage. Je n'ai pas fait de Java EE avant, ni puis-je avoir de l'expérience avec l'injection de dépendance, donc je ne comprends pas ce que je devrais utiliser?

@EJB et ancienne manière de faire de l'injection? Est l'injection faite par le conteneur d'EJB lors de l'utilisation de cette annotation en utilisant @Inject utiliser le nouveau CDI cadre? C'est que la différence et que je devrais être à l'aide de @Injecter à la place de @EJB si c'est le cas?

187voto

Piotr Nowicki Points 7565

L' @EJB est utilisé pour injecter de l'EJB et est disponible pour un certain temps maintenant. @Inject peut injecter un bean géré et fait partie de la nouvelle spécification CDI (depuis Java EE 6).

Dans les cas simples, vous pouvez simplement modifier @EJB de @Inject. Dans les cas les plus avancés (par exemple, lorsque vous dépendent @EJBs'attributs comme beanName, lookup ou beanInterface) que dans l'ordre à utiliser @Inject vous devez définir un @Producer champ ou d'une méthode.

Ces ressources peuvent être utiles pour comprendre les différences entre @EJB et @Produces et comment obtenir le meilleur d'entre eux:

Antonio Goncalves blog:
CDI la Partie I
CDI la Partie II
CDI la Partie III

JBoss Soudure de la documentation:
CDI et la Java EE écosystème

StackOverflow:
Injecter @EJB bean sur la base des conditions

35voto

Bozho Points 273663

@Inject peut injecter les bean, tout en @EJB ne peut injecter de l'Ejb. Vous pouvez utiliser pour injecter de l'Ejb, mais je préfère @Inject partout.

16voto

necromancer Points 4120

Je suis passé de @Inject de @EJB car @EJB permet circulaire injection alors qu' @Inject dégueule sur elle.

Détails: j'ai besoin d' @PostConstruct faire appel à un @Asynchronous méthode, mais il le ferait de façon synchrone. La seule façon de faire l'appel asynchrone a été d'avoir l'original appeler une méthode d'un autre bean et de l'avoir de retour d'appel de la méthode de l'original bean. Pour ce faire, chaque fève de cacao besoin d'une référence à l'autre -- donc circulaire. @Inject a échoué pour cette tâche alors qu' @EJB a travaillé.

12voto

John Manko Points 73

Voici une bonne discussion sur le sujet. Gavin King recommande @Inject sur @EJB pour non à distance les Ejb.

http://www.seamframework.org/107780.lace

-7voto

Mohd Kose Avase Points 29

@EJB peut injecter un EJB seulement à l'intérieur d'un autre EJB (Vous ne pouvez pas utiliser @EJB à l'extérieur EJB). mais @Inject peut injecter les bean (EJB ou normal bean) à l'intérieur d'un bean

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X