春天整合多数据源实现动态切换的实例讲解

  

在实际项目中时常需要连接多个数据库,而且不同的业务需求在实现过程当中往往需要访问不同的数据库。

  

<强> jdbc.properties配置文件,配置多个数据源

        # # # # # # # # # # # # # # # # # # # # # # # # # # MySQL # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #   hibernate.dialect=org.hibernate.dialect.MySQLInnoDBDialect   connection.driver_class=com.mysql.jdbc.Driver   connection.url=jdbc: mysql://localhost: 3306/测试# 63;useUnicode=true&音箱;characterEncoding=utf - 8   connection.username=雅狐   connection.password=123456      # # # # # # # # # # # # # # # # # # # # # # # # # #甲骨文# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #   connection1.driver_class=oracle.jdbc.driver.OracleDriver   connection1.url=\ jdbc: oracle \:薄\:@localhost \: 1521/MEDB   connection1.username=雅狐   connection1.password=123456      # # # # # # # # # # # # # # # # # # # # # # # # # # Sql Server2008 # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #   connection2.driver_class=net.sourceforge.jtds.jdbc.Driver   connection2.url=jdbc: jtds::状态"置疑"//localhost: 1433;数据库名=测试   connection2.username=雅狐   connection2.password=123456      

spring配置。xml配置文件如下,将DynamicDataSource豆加入到春天的上下文xml配置文件中去,同时配置DynamicDataSource的targetDataSources(多数据源目标)属性的地图映射,使用动态数据源DynamicDataSource是继承与AbstractRoutingDataSource,而AbstractRoutingDataSource又是继承于org.springframework.jdbc.datasource.AbstractDataSource, AbstractDataSource实现了统一的数据源接口,所以DynamicDataSource同样可以当一个数据源使用:

        & lt; !——数据库连接池配置——比;   & lt; bean id=笆菰础崩?皁rg.apache.commons.dbcp.BasicDataSource”比;   & lt;属性名=" driverClassName " value=" https://www.yisu.com/zixun/$ {connection.driver_class} "/比;   & lt;属性名=" url " value=" https://www.yisu.com/zixun/$ {connection.url} "/比;   & lt;属性名="用户名" value=" https://www.yisu.com/zixun/$ {connection.username} "/比;   & lt;属性名="密码" value=" https://www.yisu.com/zixun/$ {connection.password} "/比;      & lt;属性名=" initialSize " value=" https://www.yisu.com/zixun/5 "/比;   & lt;属性名=" minIdle " value=" https://www.yisu.com/zixun/1 "/比;   & lt;属性名=" maxActive " value=" https://www.yisu.com/zixun/200 "/比;      & lt; !——配置获取连接等待超时的时间——比;   & lt;属性名=" maxWait " value=" https://www.yisu.com/zixun/30000 "/比;      & lt; !——配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒——比;   & lt;属性名=" timeBetweenEvictionRunsMillis " value=" https://www.yisu.com/zixun/60000 "/比;      & lt; !——配置一个连接在池中最小生存的时间,单位是毫秒——比;   & lt;属性名=" minEvictableIdleTimeMillis " value=" https://www.yisu.com/zixun/300000 "/比;   & lt;/bean>      & lt; !——甲骨文——比;   & lt; bean id=癲ataSource1”类=皁rg.apache.commons.dbcp.BasicDataSource”比;   & lt;属性名=" driverClassName " value=" https://www.yisu.com/zixun/$ {connection1.driver_class} "/比;   & lt;属性名=" url " value=" https://www.yisu.com/zixun/$ {connection1.url} "/比;   & lt;属性名="用户名" value=" https://www.yisu.com/zixun/$ {connection1.username} "/比;   & lt;属性名="密码" value=" https://www.yisu.com/zixun/$ {connection1.password} "/比;   & lt;/bean>      & lt; !Sql server 2008——比;   & lt; bean id=癲ataSource2”类=皁rg.apache.commons.dbcp.BasicDataSource”比;   & lt;属性名=" driverClassName " value=" https://www.yisu.com/zixun/$ {connection2.driver_class} "/比;   & lt;属性名=" url " value=" https://www.yisu.com/zixun/$ {connection2.url} "/比;   & lt;属性名="用户名" value=" https://www.yisu.com/zixun/$ {connection2.username} "/比;   & lt;属性名="密码" value=" https://www.yisu.com/zixun/$ {connection2.password} "/比;   & lt;/bean>      & lt; !——动态数据源——比;   & lt; bean id=癲ynamicDataSource”类=癱om.yahu.core.dao.DynamicDataSource”比;   & lt; !——通过键值的形式来关联数据源——比;   & lt;属性名=皌argetDataSources”比;   & lt; map>   & lt;入口value-ref==笆菰础?笆菰础惫丶?   & lt;入口value-ref=癲ataSource1”键=" dataSource1 "/比;   & lt;入口value-ref=癲ataSource2”键=" dataSource2 "/比;   & lt;/map>   & lt;/property>   & lt;属性名=" defaultTargetDataSource " ref=笆菰础?比;   & lt;/bean>

春天整合多数据源实现动态切换的实例讲解