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 :

Spring ne crée pas mon bean [Framework]


Sujet :

Spring Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Octobre 2006
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 54
    Par défaut Spring ne crée pas mon bean
    Bonjour, alors tout est dans le titre mais je précise un peu
    J'ai mon appli basé sur un front tapestry, avec une couche de service au milieu. J'arrive à faire communiquer mon front avec le middle via spring par injection de bean.
    Je veux rajouter une couche DAO basé sur hibernate et jpa. Seulement, spring ne fais pas l'injection de mon bean DAO.
    Voici les classes (je fais des tests juste en passant une chaine entre les couches pour voir si ca fonctionne) :
    TestImpl est la couche de service

    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 TestImpl implements Test {
    	private final static Logger logger = Logger.getLogger(TestImpl.class);
     
    	private ShowDAO showDAO;
     
    	public void setShowDAO(ShowDAO showDao) {
    		logger.debug("setShowDao invoquee");
    	    this.showDAO = showDao;
    	  }
     
    	public String getName(){
    		logger.debug("getName invoquee");
    		if(showDAO != null)
    			return showDAO.getName();
    		else
    			return "there is a problem !";
    	}
     
    }
    la classe de la couche DAO :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    public class ShowDAOImpl extends JpaDaoSupport implements ShowDAO {
    	private final static Logger logger = Logger.getLogger(ShowDAOImpl.class);
     
    	private String name = "Jules";
     
    	public String getName(){
    		logger.debug("getName invoquee");
    		return name;
    	}
    }
    et l'applicationContext.xml qui va avec
    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
     
    <beans>
    	<bean name="test" class="org.apache.tapestry5.series.services.TestImpl"/>
     
    	<bean id="showDAO" class="org.apache.tapestry5.series.dao.ShowDAOImpl">
        	<property name="entityManagerFactory" ref="entityManagerFactory"/>
      	</bean>
     
      	<bean id="persistenceUnitManager" class="org.springframework.orm.jpa.persistenceunit.DefaultPersistenceUnitManager">
               <property name="persistenceXmlLocations">
                  <list>
                    <value>classpath*:META-INF/persistence.xml</value>
                  </list>
               </property>
               <property name="defaultDataSource" ref="dataSource"/>
         </bean>
     
      	<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
        	<property name="dataSource" ref="dataSource"/>
        	<property name="persistenceUnitManager" ref="persistenceUnitManager" />
       		<property name="jpaVendorAdapter">
         		<bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
            		<property name="showSql" value="true"/>
            		<property name="database" value="MYSQL"/>
           			<property name="generateDdl" value="true"/>
            		<property name="databasePlatform" value="org.hibernate.dialect.MySQL5InnoDBDialect"/>
          		</bean>
        	</property>
      	</bean>
     
      	<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        	<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
        	<property name="url" value="jdbc:mysql://localhost:3306/series"/>
        	<property name="username" value="root"/>
        	<property name="password" value="root"/>
      	</bean>
     
      	<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
    	    <property name="entityManagerFactory" ref="entityManagerFactory"/>
    	    <property name="dataSource" ref="dataSource"/>
      	</bean>
     
    </beans>
    je donne pas la classe de front Tapestry, elle appelle juste la méthode getName de la classe TestImpl grâce au bean test injecté par spring.

    Donc quand j'execute ca j'obtiens dans ma chaine there is a problem !
    ce qui implique que le bean showDAO n'est pas crée. Mais je ne vois pas pourquoi !
    Si quelqu'un a une idée, je suis preneur

    Merki d'avance

  2. #2
    Expert confirmé
    Avatar de djo.mos
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 666
    Par défaut
    Salut,
    Mais je ne vois pas pourquoi !
    C'est très simple : tu ne dis pas à Spring d'injecter le dAO dans l'objet TestImpl.

    Ce que tu as fait:

    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    <bean name="test" class="org.apache.tapestry5.series.services.TestImpl"/>

    CE qu'il fallait faire:
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <bean name="test" class="org.apache.tapestry5.series.services.TestImpl">
        	<property name="showDAO" ref="showDAO"/>
     </bean>

  3. #3
    Membre confirmé
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Octobre 2006
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 54
    Par défaut
    Oki merki erreur de débutant donc, je ne pensais pas qu'il était nécessaire de l'injecter comme ca.

    Problème résolu donc

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 7
    Dernier message: 29/01/2013, 12h11
  2. [EJB2.1 Entity] Mon Bean entity n'ecrit pas dans la base ca reste temporaire (Persistance)
    Par tntneo dans le forum Java EE
    Réponses: 1
    Dernier message: 03/03/2011, 16h16
  3. [debutant] tomcat trouve pas mon servlet
    Par zerovolt dans le forum Tomcat et TomEE
    Réponses: 6
    Dernier message: 28/08/2004, 15h18
  4. sql ne comprend pas mon where!et me demande des parametres
    Par marie10 dans le forum Langage SQL
    Réponses: 10
    Dernier message: 20/04/2004, 11h08
  5. [Servlet][EJB]lire un fichier à partir de mon bean
    Par kimausoleil dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 13/02/2004, 14h26

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