Le projet doit obtenir des données sur d'autres sites Web car il s'agit d'une exigence temporaire. Je ne m'attendais pas à ce que plusieurs sources de données soient nécessaires lors du démarrage du projet.
Ainsi, Baidu a constaté qu'il n'a besoin que de modifier le fichier ApplicationContext.xml de Spring et d'écrire trois classes d'outils pour l'implémenter parfaitement.
applicationContext.xml
<! - Configuration source multi-données -> <bean id = "ds1"> <propriété name = "driverclassname" value = "$ {jdbc.DriverClassName}" /> <propriété name = "url" value = "$ {jdbc.url}" /> <propriété name = "username" value = "$ {jdbc.usrame}" Value = "" /> </ bean> <bean id = "ds2"> <propriété name = "driverclassname" value = "" /> <propriété name = "url" value = "" /> <propriété name = "username" value = "" /> <propriété name = "mot de passe" value = "" /> </ / bean> <! - Dynamic Configuration de la source de données -> <Eban ID = "dataSource"> // that it the dynamic Source to Data Source to Data DynamicDatasource.java dans votre projet <propriété name = "TargetDataSources"> <map key-type = "java.lang.string"> <entrée valeur-ref = "ds_admin" key = "ds1"> </ entry> <entrée valeur-ref = "ds_partner" key = "ds2"> </ntryed> par défaut-> <propriété name = "defaultTargetDataSource" ref = "ds_admin"> </ propriété> </ bean>DataSourContexTholder.java
classe publique DataSourceContexTholder {private static final ThreadLocal <string> ContexTholder = new ThreadLocal <string> (); public static void setDbType (String dbType) {ContexTholder.set (dbType); } public static String getDBType () {return ((String) ContexTholder.get ()); } public static void cleardbType () {ContexTholder.Remove (); }} DataSourceType.java (Set Static Variables)
classe publique DataSourCetype {// Base de données par défaut Public Static Final String Source_Admin = "DS1"; // La deuxième base de données, ID dans ApplicationContext.xml Public Static Final String Source_Partner = "DS2";}Vient ensuite la clé DynamicDatasource.java Il hérite de la méthode abstraite déterminéeCurrentLookupkey dans AbstractroutingDataSource, qui est le cœur de la mise en œuvre de la voie de la source de données. Cette méthode est remplacée.
import org.springframework.jdbc.datasource.lookup.abstractroutingDataSource; la classe publique DynamicDataSource étend AbstractroutingDatasource {@Override Object DeviterCurrentLoWupKey () {return dataSourceContexTholder.getDbType (); }}Ce qui précède est une analyse des exemples d'utilisation de Spring MVC MyBatis Multi-Data Source introduite par l'éditeur. J'espère que ce sera utile à tout le monde. Si vous avez des questions, veuillez me laisser un message et l'éditeur répondra à tout le monde à temps. Merci beaucoup pour votre soutien au site Web Wulin.com!