Bonjour à tous, je suis en train de développer un web service basé sur Axis, dont voici la classe très basique pour l'instant :
J'aimerais injecté ma couche DAO dans cette classe grâce à Spring, j'ai donc mon fichier applicationContext.xml
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 public class Server { private AppVersionDAO appVersionDAO; public Server() { super(); } public void setAppVersionDAO(AppVersionDAO appVersionDAO) { Server.appVersionDAO = appVersionDAO; } public boolean getVersion(){ return (appVersionDAO==null); } }
La connexion à ma base marche bien, mon problème est que dans ma classe serveur, ma couche DAO est null lorsque mon web service est appelé, pour faire fonctionner mon appVersionDAO je doit le mettre en static, comme ceci :
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 <?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="datasource" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="locations"> <value>classpath:ressources/mysql.properties</value> </property> </bean> <bean id="dbConnection" class="org.springframework.jdbc.datasource.DriverManagerDataSource" singleton="true"> <property name="driverClassName" value="${datasource.driver}"/> <property name="url" value="${datasource.url}"/> <property name="username" value="${datasource.username}"/> <property name="password" value="${datasource.password}"/> </bean> <!-- début du bloc des Services --> <bean id="server" class="wsProjetWeb.services.Server" > <property name="appVersionDAO" ref="appVersionDAO"/> </bean> <!-- fin du bloc des Services --> <!-- debut du bloc des DAO --> <bean id="appVersionDAO" class="wsProjetWeb.database.dao.AppVersionDAOImp" singleton="true"> <property name="dbConnection" ref="dbConnection"/> </bean> <!-- fin du bloc des DAO --> </beans>
Ma question est pourquoi ma couche DAO n'est pas injecté à chaque appel ? Est ce propre à la manière de fonctionner de Axis ?
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 public class Server { private static AppVersionDAO appVersionDAO; public Server() { super(); } public void setAppVersionDAO(AppVersionDAO appVersionDAO) { Server.appVersionDAO = appVersionDAO; } public boolean getVersion(){ return (appVersionDAO==null); } }
Avoir une DAO statique dans une classe censé être appelé mainte fois c'est grave ?
Merci de vos réponses !
Partager