Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 6 sur 6
  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    mai 2007
    Messages
    628
    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 : 628
    Points : 205
    Points
    205

    Par défaut Apprendre CDI, Beans, injection, Weld, IoC, DI

    Salut à tous,

    J'ai besoin de monté en compétence en 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 confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    mai 2007
    Messages
    628
    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 : 628
    Points : 205
    Points
    205

    Par défaut

    Dans le cas d'injection de dépendances pour constructeurs qui ressemble à cela :

    Code :
    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 éprouvé
    Avatar de Khaled.Noordin
    Homme Profil pro
    Inscrit en
    janvier 2005
    Messages
    357
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : janvier 2005
    Messages : 357
    Points : 417
    Points
    417

    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 confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    mai 2007
    Messages
    628
    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 : 628
    Points : 205
    Points
    205

    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 :
    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 :
    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 éprouvé
    Avatar de Khaled.Noordin
    Homme Profil pro
    Inscrit en
    janvier 2005
    Messages
    357
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : janvier 2005
    Messages : 357
    Points : 417
    Points
    417

    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 confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    mai 2007
    Messages
    628
    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 : 628
    Points : 205
    Points
    205

    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.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •