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
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
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 !"; } }
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 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; } }
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.
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>
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
Partager