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 par mutateur et perte de valeur


Sujet :

Spring Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 57
    Par défaut Injection par mutateur et perte de valeur
    Bonjour,

    je code actuellement avec Spring et j'ai été amené à utiliser des injections de beans par mutateur dont la création fonctionne bien par contre leur utilisation posent problème puisqu'elle me génère un NullPointerException.
    Pouvez-vous m'éclairer s'il vous plaît, merci d'avance .


    voici le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    @Controller
    public class Home {
     
    	private ICoco daoA;
    	private static final Logger logger = LoggerFactory.getLogger(HomeController.class);
     
    	@RequestMapping(value = "", method = RequestMethod.GET)
    	public String home(Model model) {	
    		System.out.println("coco : " + daoA.getNb()); // ici erreur null
    		return "home";
    	}
     
    	    public void setDaoA(ICoco daoA){
    	    	System.out.println(" coco vaut : "+daoA.getNb()); // ici l'affichage se déroule correctement
    	    	this.daoA=daoA;
     
    	    }
    }

    la classe Coco :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    public class Coco implements ICoco{
    private String nb = "5";
     
    	public Coco() {
    	super();
    }
    	public Coco(String nb) {
    		super();
    		this.nb = nb;
    	}
    	public String getNb() {
    		return nb;
    	}
    	public void setNb(String nb) {
    		this.nb = nb;
    	}
     
    }




    voici le fichier de configuration :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
    	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    	 xmlns:context="http://www.springframework.org/schema/context"
    	xmlns:mongo="http://www.springframework.org/schema/data/mongo"
    	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
    	  http://www.springframework.org/schema/data/mongo
          http://www.springframework.org/schema/data/mongo/spring-mongo-1.0.xsd
          http://www.springframework.org/schema/context 
    	   http://www.springframework.org/schema/context/spring-context-3.2.xsd">
     
        <bean id="daoA" class="com.testmongo.mongo.model.Coco">	
    	 <property name="nb" value="John Doe"/>
    	</bean>	
     
       <bean id="metierZ" class="com.testmongo.mongo.Home">
    		<property name="daoA">
    		<ref bean="daoA" />
    		</property>
    	</bean>
     
    </beans>

  2. #2
    Membre chevronné Avatar de freddou17
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2013
    Messages
    341
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2013
    Messages : 341
    Par défaut
    Slt,

    Tu utilises les annotations? ou le xml car tu déclares @Controller et le bean metierZ dans ton fichier xml. Il me semble que c'est la conf xml qui est prise en compte dans le cas d'une double déclaration. De plus je ne vois pas de balise
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    <context:component-scan...

    Pour finir ta méthode me parait douteuse, tu ne peux pas la renommer? car on aurait tendances à l'assimiler à un constructeur

    ++

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 57
    Par défaut
    Salut,

    oui j'utilise bien la balise <context:component-scan... mais dans le fichier de configuration du dispatcherServlet d'autre part j'ai le même résultat que ce soit avec une classe annoté Controller ou lorsque j'utilise un bean Service...
    Lors de la création j'ai la valeur du bean coco qui s'affiche correctement (voir print dans le mutateur) mais ensuite lorsque j'appelle à nouveau ce bean et bien plus rien, j'obtiens un nullpointerexception.
    J'ai déja utilisé l'injection par mutateur allié à des injection par annotation au cours d'un autre projet sous Spring et je n'ai jamais eu de problème. Mais là je vois pas du tout d'où cela peut bien venir.
    Je précise aussi qu'avec l'annotation autowired ou en utilisant un attribut static je n'ai pas ce soucis.

Discussions similaires

  1. [pointeur][passage par référence] Perte des valeurs.
    Par ced600 dans le forum Débuter
    Réponses: 13
    Dernier message: 05/09/2008, 18h44
  2. Perte de valeurs saisies dans un formulaire
    Par mitje dans le forum Struts 1
    Réponses: 3
    Dernier message: 26/12/2006, 14h35
  3. Perte de valeur de paramètre entre 2 formulaires
    Par lodan dans le forum Langage
    Réponses: 4
    Dernier message: 23/09/2006, 10h13
  4. Réponses: 9
    Dernier message: 30/05/2006, 10h33

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