Иногда в проекте подключается несколько баз данных, и несколько источников данных должны быть настроены в пружине. Я недавно столкнулся с этой проблемой. Поскольку мой проект был основан на общем DAO раньше, во время конфигурации возникают постоянные проблемы, и этот метод противоречит файлам ресурсов. Если вы сканируете файл отображения, имя боба SQLSessionFactory должно быть SQLSessionFactory. Он не может прочитать SQLSessionFactory2 или другие имена. Окончательное решение заключается в следующем:
1. Добавьте следующий класс multipledatasource.java в проект
пакет com.etoak.util; Импорт org.springframework.jdbc.datasource.lookup.abstractroutingDataSource; public Class multipledatasource Extress AbstractroutingDatasource {private Static Final Threadlocal <string> dataSourcekey = new inehytableThreadlocal <String> (); public static void setDataSourcekey (String DataSource) {dataSourceKey.set (dataSource); } @Override Protected Object DeginedCurrentLookupkey () {// TODO автоматически генерируемый метод STUB DataSourceKey.get (); }} Файл конфигурации пружины выглядит следующим образом:
<Beans xmlns = "http://www.springframework.org/schema/beans" xmlns: context = "http://www.springframework.org/schema/context" xmlns: p = "http://wwww.springframe.orgmshema. xmlns: mvc = "http://www.springframework.org/schema/mvc" xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xsi: schemalocation = "http://www.springema.springmema http://www.springframework.org/schema/beans/spring-beans-3.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/mvcc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd"> <context:component-scan base-package="com"/> <mvc:annotation-driven/> <context:property-placeholder location="classpath:db.properties"/> <bean id="ds1" P: DriverClassName = "$ {mysql.driver}" p: url = "$ {mysql.url}" p: username = "$ {mysql.username}" p: пароль = "$ {mysql.password}"/> <bean id = "ds2" p: riverclassname = "$ {$ {$ {$ {$" P: url = "$ {mysql2.url}" p: username = "$ {mysql2.username}" p: password = "$ {mysql2.password}"/> <bean id = "mulpotledatasource"> <proportme name = "defaultatrgetdatasource" ref = "ds1"/> <propertive = "name =" name = "hame = name =" hame = "name =" hamedatas> "hame =" name = "name =" hamedatas> "hamedatas>" <propertive yame = ">" <". key = "ds1" value-ref = "ds1"/> <intpirt key = "ds2" value-ref = "ds2"/> </map> </property> </bean> <bean id = "sqlSessionFactory1" p: dataSource-ref = "Multipledatasource" P: mapperlocations = "classpath: com/etoak/dao/*-mapper.xml"/> <bean> <bean> <свойство name = "basepackage" value = "com.etoak.dao"/> <name = "markerInterface" value = "com.etoak.dao.basedao"/> </beannecure> </beans> </beans> </beanneman </beans> </beannecure> </beannecure> </beannecure> </beanneman </beannectabface. Тестовый класс выглядит следующим образом:
пакет com.etoak.test; Импорт org.springframework.context.applicationContext; Import org.springframework.context.support.filesystemxmlapplicationContext; импорт com.etoak.dao.productdaoif; импорт com.etoak.util.multipledatasource; открытый тест класса {public static void main (string [] args) {ApplicationContext ac = new FileSystemXmlApplicationContext ("webContent/web-inf/etoak-servlet.xml"); Productdaoif prodao = (productdaoif) ac.getbean (productdaoif.class); Multipledatasource.setdatasourcekey ("ds1"); int count1 = prodao.selectproductcount (); Multipledatasource.setdatasourcekey ("ds2"); int count2 = prodao.selectproductcount (); System.out.println (count1); System.out.println (count2); }}Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.