/ / Comment créer une définition de bean uniquement si le bean n'a pas été chargé auparavant? - java, printemps, printemps-transactions

Comment créer une définition de haricot uniquement si le haricot n'a pas été chargé auparavant? - java, printemps, printemps-transactions

J'utilise Hibernate et Mybatis pour le Daocouche, tout à fait avec Spring 3. Toutes les configurations de beans sont via XML. L’intégration entre Hibernate et Mybatis n’a aucun problème lorsque nous déclarons ces beans dans le même fichier XML. J’ai essayé de les découpler dans différents fichiers et un problème est survenu lors des tests d’intégration, car nous ne pouvons pas exécuter les tests pour MyBatis car il manque pour transactionManager haricot. Lorsque la configuration était dans un seul fichier, cela ne posait aucun problème car nous avons ceci:

<bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<!--
sessionFactory bean is provided by Hibernate configuration.
Problem: when decoupling the configuration, there"s no
transactionManager bean and the tests fail.
-->
<property name="sessionFactory" ref="sessionFactory" />
</bean>

Après avoir scindé la configuration, j’ai résolu ce problème dans l’environnement de test en redéfinissant la transactionManager haricot dans MyBatis config xml.

<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager" >
<property name="dataSource" ref="dataSource" />
</bean>

Mais maintenant, j'ai un test unitaire où Hibernate et Mybatis sont requis. Comment puis-je éviter la création de transactionManager défini dans la configuration MyBatis pour n'utiliser que transactionManager défini dans la configuration d'Hibernate?

Réponses:

0 pour la réponse № 1

Je diviserais le transactionManager définition de haricot dans un troisième fichier. Vous devez donc charger deux fichiers (hibernate + transactionManager ou iBatis + transactionManager) ou trois fichiers (hibernate + iBatis + transactionManager) selon vos besoins. le transactionManager peut également être déclaré dans un fichier de ressort "commun"c'est toujours importé. C’est l’approche que j’avais utilisée dans le passé. J’ai vu des articles sur la façon de remplacer les définitions de bean Spring, mais la plupart des gens la recommandent contre.