IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Java EE Discussion :

Apprendre CDI, Beans, injection, Weld, IoC, DI


Sujet :

Java EE

  1. #1
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2007
    Messages
    643
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2007
    Messages : 643
    Points : 305
    Points
    305
    Par défaut Apprendre CDI, Beans, injection, Weld, IoC, DI
    Salut à tous,

    J'ai besoin de monté en compétence et apprendre Java EE pour un projet qui utilise CDI, injection de dépendances, Managed Bean, IoC, Weld, @qualifier etc....

    Le problème est que lorsque j'essaie de me renseigner sur ces concepts je tourne en rond car :
    - pour connaitre IoC il faut connaitre les injections de dépendances
    - pour connaitre les injections de dépendances il faut connaitre les Managed Beans
    - pour connaitre les managed Beans il faut connaitre IoC

    Ce qui je dit n'est pas forcement vrai mais sert à vous montrer que pour apprendre un concept je dois en apprendre d'autres qui dépendants à leur tour du premier. C'est le serpent qui se mord la queue. Je n'arrive pas à trouver un point d'entrée pour apprendre tout ces concepts.

    Pourriez-vous m'aider à trouver une voie d'entrée et répondre à quelques questions dès lors que j’entamerai cette voie d'accès ?

    Existe t-il des textes de références en français (je n'ai rien contre l'anglais mais quand je sujet est aussi inconnu et abstrait et fait référence à d'autres concept que je ne connais pas non plus, la compréhension en devient impossible) ?

    Sinon des textes en anglais qui expliquent un concept avec le minimum de référence à d'autres concepts lui ressemblant afin de mieux cerner les explications ?

    Y aurait-il quelques âmes charitables qui est pitié de moi et qui veuille bien m'ouvrir la voie de la compréhension du Java EE.

  2. #2
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2007
    Messages
    643
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2007
    Messages : 643
    Points : 305
    Points
    305
    Par défaut
    Dans le cas d'injection de dépendances pour constructeurs qui ressemble à cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    public class MyDao {
     
        protected DataSource dataSource = null;
     
        public MyDao(DataSource dataSource){
          this.dataSource = dataSource;
        }
     
     
        //data access methods...
        public Person readPerson(int primaryKey) {...}
     
      }
    Ok je commence à voir ce qu'est l'injection de dépandences par contre un mystère réside, Comment JavaEE fait pour trouver dynamiquement la bonne implémentation de l'objet de type Datasource ?

  3. #3
    Membre confirmé
    Avatar de Khaled.Noordin
    Homme Profil pro
    Inscrit en
    Janvier 2005
    Messages
    354
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 354
    Points : 497
    Points
    497
    Billets dans le blog
    1
    Par défaut
    jette un coup d'oeil ici et la
    il n'y a qu'une implementation de datasource, mais n configurations possible donc le choix dépendra de l'annotation @Resouce que tu va mettre dessus avec l'appel jndi dans une string qui va bien

  4. #4
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2007
    Messages
    643
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2007
    Messages : 643
    Points : 305
    Points
    305
    Par défaut
    Merci pour les liens et surtout celui de Parleys qui est vraiment complet et intéressant. Dommage qu'on ne puisse pas avoir de transcription écrite de leur discours car c'est quand même complexe de bien comprendre le discours si on n'a pas fait un doctorat d'anglais

    quant à ton autre lien, l'article à l'air intéressant en parlant de @qualifier mais j'ai déjà du mal à comprendre la notion d'injection alors je suis un peu largué.

    Pourrais-tu me dire la différence qu'il y a entre une classe possédant un attribut de type ListServiceBean comme cela

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    @Stateless
    @LocalBean
    @Remote({ParametrageService.class})
    @TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
    @WebService(portName="ParametrageWSPort", targetNamespace="http://xxx.xxx.xxxx.xxx.xxxx.xxx")
    @SOAPBinding(parameterStyle=SOAPBinding.ParameterStyle.WRAPPED, style=SOAPBinding.Style.DOCUMENT, use=SOAPBinding.Use.LITERAL)
    public class ParametrageServiceBean implements ParametrageService 
    {
        @Inject
        private ListServiceBean listService;
    Et la même classe pour laquelle nous n'injectons pas de ListServiceBean mais uniquement une association avec ce ListServiceBean de la sorte :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    @Stateless
    @LocalBean
    @Remote({ParametrageService.class})
    @TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
    @WebService(portName="ParametrageWSPort", targetNamespace="http://xxx.xxxx.xxx.xxx.xxxx.xxx")
    @SOAPBinding(parameterStyle=SOAPBinding.ParameterStyle.WRAPPED, style=SOAPBinding.Style.DOCUMENT, use=SOAPBinding.Use.LITERAL)
    public class ParametrageServiceBean implements ParametrageService 
    {
        private ListServiceBean listService;

  5. #5
    Membre confirmé
    Avatar de Khaled.Noordin
    Homme Profil pro
    Inscrit en
    Janvier 2005
    Messages
    354
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 354
    Points : 497
    Points
    497
    Billets dans le blog
    1
    Par défaut
    La différence est que rien ne sera injecté dans ton listservice donc il sera toujours null en l’état de ton code,
    Pour revenir au code que tu as présenté au dessus avec le DAO, tu as plus vite fait de passer par JPA plutôt que de construire un accès aux données par datasource, qui vraisemblablement serait du jdbc

  6. #6
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2007
    Messages
    643
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2007
    Messages : 643
    Points : 305
    Points
    305
    Par défaut
    La différence est que rien ne sera injecté dans ton listservice donc il sera toujours null en l’état de ton code
    J'ai vraiment du mal à cerner la notion d'injection. Pourrais-tu essayer de me faire une explication schématique de ce que va faire le programme ou le compilateur lorsque je vais compiler ou exectuer mon code qui contient cette injection ?

    Pour revenir au code que tu as présenté au dessus avec le DAO, tu as plus vite fait de passer par JPA plutôt que de construire un accès aux données par datasource, qui vraisemblablement serait du jdbc
    Malheureusement pour le moment je n'ai pas le choix mais je prend bonne note de ta remarque intéressante. Ça me permettra de mieux comprendre JPA en sachant comment je dois "ramer" sans lui je ne le l'utilise pas effectivement.

Discussions similaires

  1. [CDI] Apprendre CDI, Beans, injection, Weld, IoC, DI
    Par geforce dans le forum Java EE
    Réponses: 1
    Dernier message: 09/02/2015, 14h35
  2. Réponses: 4
    Dernier message: 06/01/2015, 16h56
  3. Réponses: 0
    Dernier message: 04/11/2014, 13h06
  4. CDI Weld-se Inject Event
    Par szambaux dans le forum Général Java
    Réponses: 0
    Dernier message: 24/11/2012, 19h22
  5. [Web Services] [Remoting][CXF] Injection Spring IOC
    Par Ylias dans le forum Spring
    Réponses: 8
    Dernier message: 05/01/2009, 11h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo