Bonjour,
J'ai défini un "Manager" et un "DAO" commun qui permet d'accéder à différentes tables de ma base de données (hibernate derrière).
Dans mon controlleur, j'utilise @Autowired et @Qualifier pour automatiquement instancier mon manager. Cela fonctionne correctement mais me voici confronter à un problème. Je désire instancier plusieurs fois ce manager pour différentes classes..
Voici mon Controller :
Et il se trouve que tlocationManager, tcommManager et initiativManager font référence au même objet !
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 @Autowired @Qualifier("commonManager") private CommonManager<TypeLieu> tlocationManager; @Autowired @Qualifier("commonManager") private CommonManager<TypeCommunication> tcommManager; @Autowired @Qualifier("commonManager") private CommonManager<Initiative> initiativManager; @Override protected Map referenceData(HttpServletRequest request, Object command, Errors errors, int page) throws Exception { Map<Object, Object> dataMap = new HashMap<Object, Object>(); tlocationManager.loadClass(TypeLieu.class); dataMap.put("typeLocList",this.tlocationManager.getList()); tcommManager.loadClass(TypeCommunication.class); dataMap.put("typeCommList",this.tcommManager.getList()); initiativManager.loadClass(Initiative.class); dataMap.put("initiList",this.initiativManager.getList()); return dataMap; } .. .. ..
Voici aussi une partie de mon springmvc-servlet.xml
J'ai essayé de chercher un peu, j'ai cru comprendre qu'il était possible de mettre comme attribut ou propriété : singleton="false" .
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 <bean id="commonManager" parent="transactionProxy"> <property name="target"> <ref bean="commonManagerTarget"/> </property> <property name="transactionAttributeSource"> <bean class="org.springframework.transaction.annotation.AnnotationTransactionAttributeSource"/> </property> </bean> <bean id="commonManagerTarget" class="cbc.ccrt.service.impl.CommonManagerImpl" />
J'ai tenté mais il me dit que cet attribut ou cette propriété est invalide..
Comment puis-je procéder ??
J'espère que vous pourrez m'en dire plus.
Partager