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:
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:
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:
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