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

Spring Java Discussion :

Injection de dépendance


Sujet :

Spring Java

  1. #1
    Membre à l'essai
    Inscrit en
    Février 2004
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 32
    Points : 22
    Points
    22
    Par défaut Injection de dépendance
    Bonjour,

    J'utilise Spring 3.1.
    J'ai cette classe Service qui ne contient pas de getteur, setteur sur le champ privé "centreEditeursDao" (un oubli) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    @Service
    public class CentresEditeursService {
     
      @Autowired
      private CentresEditeursDao centreEditeursDao;
     
      public List<CentresEditeurs> getListeCentresEditeurs() {
        return centreEditeursDao.getListeCentresEditeursByLabel();
      }
    Et pourtant quand j'appelle ma méthode getListeCentresEditeurs(), centresEditeursDao n'est pas a nul et est correctement initialisé/injecté.

    Je n'arrive pas a comprendre comment fait Spring pour faire l'injection, j'avais jusqu’à présent toujours ajouté les getter/setter sur les champs @Autowired
    C'est donc visiblement inutile avec l'annotation @Service ?

    Merci pour vos éclaircissements

  2. #2
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Octobre 2004
    Messages
    398
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2004
    Messages : 398
    Points : 710
    Points
    710
    Par défaut
    Citation Envoyé par Flam Voir le message
    Bonjour,

    J'utilise Spring 3.1.
    J'ai cette classe Service qui ne contient pas de getteur, setteur sur le champ privé "centreEditeursDao" (un oubli) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    @Service
    public class CentresEditeursService {
     
      @Autowired
      private CentresEditeursDao centreEditeursDao;
     
      public List<CentresEditeurs> getListeCentresEditeurs() {
        return centreEditeursDao.getListeCentresEditeursByLabel();
      }
    Et pourtant quand j'appelle ma méthode getListeCentresEditeurs(), centresEditeursDao n'est pas a nul et est correctement initialisé/injecté.

    Je n'arrive pas a comprendre comment fait Spring pour faire l'injection, j'avais jusqu’à présent toujours ajouté les getter/setter sur les champs @Autowired
    C'est donc visiblement inutile avec l'annotation @Service ?

    Merci pour vos éclaircissements
    ouais t'expliquer exactement comment Spring injecte les beans avec l'autowired ca j'en sais rien

    mais après par contre je te confirme qu'avec l'annotation autowired, tu n'as plus besoin de getter / setter du moment que tes 2 beans sont déclarés dans tes fichiers de config :

    <bean id="centresEditeursService " class="package.CentresEditeursService "/>
    <bean id="centreEditeursDao" class="package.CentreEditeursDao" />

    (encore qu'avec les annotations @Service et @Repository que tu mets je suppose que tu scannes tes beans donc même pas besoin de les déclarer)

  3. #3
    Membre à l'essai
    Inscrit en
    Février 2004
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 32
    Points : 22
    Points
    22
    Par défaut
    Merci Franck pour ta réponse,
    Effectivement je scan les 2 packages avec le "context:component-scan"

    C'est bizarre je ne trouve rien dans la doc qui en parle, je trouve ça assez déroutant.

  4. #4
    Rédacteur
    Avatar de Hikage
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    1 177
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 177
    Points : 6 301
    Points
    6 301
    Par défaut
    En fait, Spring utilise l'API Reflection du JDK.
    Celle-ci permet de voir tout les champs d'une classe, même les champs privés.
    Et par un tour de force, l'API Reflection permet de venir modifier ces champs, et dans le cas de Spring de venir injecter les valeurs.
    Hikage
    SCJP / SCWCD & SCWSJD Certified / Spring Framework Certified
    [Personal Web] [CV]

    F.A.Q Spring Framework - Participez !

Discussions similaires

  1. [EJB3] [JBoss] Injection de dépendance circulaire ?
    Par Claythest dans le forum Java EE
    Réponses: 6
    Dernier message: 04/08/2009, 08h11
  2. [Framework] Injection de dépendances ; comment se passer du XML ?
    Par ummon99 dans le forum Spring
    Réponses: 3
    Dernier message: 12/01/2008, 09h19
  3. [EJB3] Injection de dépendance et Stateful
    Par newbeewan dans le forum Java EE
    Réponses: 1
    Dernier message: 15/05/2007, 07h33
  4. [Integration] [EasyMock] Injection de dépendance à l'éxécution
    Par frangin2003 dans le forum Spring
    Réponses: 2
    Dernier message: 06/03/2007, 11h06
  5. Spring + TagSupport et injection de dépendance
    Par worldchampion57 dans le forum Spring Web
    Réponses: 2
    Dernier message: 26/02/2007, 09h01

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