Às vezes, vários bancos de dados são conectados em um projeto e várias fontes de dados precisam ser configuradas na primavera. Eu encontrei esse problema recentemente. Como meu projeto foi baseado no General Dao antes, há problemas constantes durante a configuração, e esse método entra em conflito com os arquivos de recursos. Se você escanear o arquivo de mapeamento, o nome do feijão do SQLSessionFactory deve ser o SQLSessionFactory. Ele não pode ler SQLSessionFactory2 ou outros nomes. A solução final é a seguinte:
1. Adicione a aula seguinte multiplleataSource.java ao projeto
pacote com.etoak.util; importar org.springframework.jdbc.dataSource.lookup.abstractroutingDataSource; classe pública multiplleataSource estende o abstractroutingDataSource {private estático Final Threadlocal <String> DataSourceKey = new InheRitableThreadLocal <String> (); public static void setDataSourceKey (String DataSource) {DataSourceKey.Set (DataSource); } @Override Objeto protegido determinanteCurrentLookUskKey () {// TODO Método Gerado Auto-Generado Stub Return DataSourceKey.get (); }} O arquivo de configuração da primavera é o seguinte:
) xmlns: mvc = "http://www.springframework.org/schema/mvc" xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xsi: schemalocation = "http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-bans-3.xsd http://wwwem http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd "> <Contexto: Component-Scan-Package =" com "/> <mc-. Local = "ClassPath: db.properties"/> <bean id = "ds1" p: driverclassName = "$ {mysql.driver}" p: url = "$ {mysql.url}" p: username = "$ {mySql.Username}" p: p: driverclassName = "$ {mysql2.driver}" p: url = "$ {mysql2.url}" p: userName = "$ {mysql2.username}" p: senha = "$ {mysql2.password"/> <bangget = "multipledatasTas ref = "ds1"/> <name da propriedade = "TargetDataSources"> <pap> <entradas key = "ds1" value-ref = "ds1"/> <entradas key = "ds2" value-ref = "ds2"/> </map> </propriedade> </bean> <bean íds = "sqlSessptória P: MapperLocations = "ClassPath: com/etoak/dao/*-mapper.xml"/> <ean> <ipean> <Propriedade name = "Basepackage" value = "com.etoak.dao"/> <names name = "markerinterface" = "com.eean/ A aula de teste é a seguinte:
pacote com.etoak.test; importar org.springframework.context.ApplicationContext; importar org.springframework.context.support.filesystemxmlapplicationContext; importar com.etoak.dao.productdaoif; importação com.etoak.util.multipledatasource; public class Test {public static void main (String [] args) {ApplicationContext AC = new FileSystemXMLApplicationContext ("WebContent/Web-Inf/Etoak-Servlet.xml"); ProductDaoif Prodao = (ProductDaoif) AC.GetBean (ProductDaoif.class); Multiplledatasource.setDataSourceKey ("DS1"); int count1 = prodao.SelectProductCount (); Multiplledatasource.setDataSourceKey ("DS2"); int count2 = prodao.SelectProductCount (); System.out.println (count1); System.out.println (count2); }}O exposto acima é todo o conteúdo deste artigo. Espero que seja útil para o aprendizado de todos e espero que todos apoiem mais o wulin.com.