`

Spring中容易被忽视但有用的AbstractRoutingDataSource

 
阅读更多
在spring 中,一个很好用但是容易被忽略的,就是AbstractRoutingDataSource,它的一个作用就是可以根据用户发起的不同请求去转换不同的数据源,比如根据用户的不同地区语言选择不同的数据库,下面举例说明:



import org.springframework.context.i18n.LocaleContextHolder;
import org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource;
 
public class MyRoutingDataSource extends AbstractRoutingDataSource{
    @Override
    protected Object determineCurrentLookupKey() {
        String language = LocaleContextHolder.getLocale().getLanguage();
        System.out.println("Language obtained: "+ language);
        return language;
    }

   首先在这里,继承了AbstractRoutingDataSource类,然后获得当前的语言种类,在接下来中要用到:
  然后设置两个数据源,如下:
jdbc.databaseurlOne=jdbc:mysql://127.0.0.1:3306/test
jdbc.databaseurlTwo=jdbc:mysql://127.0.0.1:3306/testTwo


  然后同样在配置文件中设置:
<bean id="abstractDataSource" class="org.apache.commons.dbcp.BasicDataSource"
    destroy-method="close"
    p:driverClassName="${jdbc.driverClassName}"
    p:username="${jdbc.username}"
    p:password="${jdbc.password}" />
 
<bean id="concreteDataSourceOne"
    parent="abstractDataSource"
    p:url="${jdbc.databaseurlOne}"/>
  
 <bean id="concreteDataSourceTwo"
    parent="abstractDataSource"
    p:url="${jdbc.databaseurlTwo}"/>


  可以看到,这里有两个不同的数据库,这里假设各自的用户名和密码都是一样的,只是URL不同,
  继续:
  
<bean id="dataSource" class="com.howtodoinjava.controller.MyRoutingDataSource">
   <property name="targetDataSources">
      <map key-type="java.lang.String">
         <entry key="en" value-ref="concreteDataSourceOne"/>
         <entry key="es" value-ref="concreteDataSourceTwo"/>
      </map>
   </property>
 
</bean>


   这里,就是用到了上面的MyRoutingDataSource类,其中指定当返回的语言是en的时候,用
  concreteDataSourceOne数据源,为es的时候,用concreteDataSourceTwo
11
12
分享到:
评论
3 楼 穿围裙的程序员 2015-04-20  
spring 自带的JdbcTemplate为什么切换不过来呢?
2 楼 jackyrong 2014-01-09  
恩,是的,
1 楼 liubey 2014-01-08  
呵呵,你把这个类想简单了。这个类就是用来做主从数据库的,再做两个annotation,比如master和slave 写在方法上,配合这个类就可以做数据库主库从库读写分离了

相关推荐

    Spring中文API帮助文档

    spring中文API文档 spring中文API文档 spring中文API文档 spring中文API文档

    spring 源码中文注释

    spring 源码解析

    spring源码中英文注释

    spring源码 中英文注释

    spring 5 中文注释源码.rar

    新版 spring 5 中文注释源码,关键源码位置都有中文注释,方便阅读源码 spring源码解读 Spring框架是由于软件开发的复杂性而创建的...从简单性、可测试性和松耦合性角度而言,绝大部分Java应用都可以从Spring中受益。

    spring源码注释中文

    spring源码带注释的,直接可以阅读,不需要重新编译。

    Spring-5.0.0-官方中文文档

    Spring-5.0.0-官方中文文档 Spring-5.0.0-官方中文文档 Spring-5.0.0-官方中文文档

    Spring中文开发手册下载 CHM

    Spring中文开发手册下载Spring中文开发手册下载Spring中文开发手册下载Spring中文开发手册下载

    spring源码分析(1-10)

    Spring源代码解析(一):Spring中的事务处理 Spring源代码解析(二):ioc容器在Web容器中的启动 Spring源代码分析(三):Spring JDBC Spring源代码解析(四):Spring MVC Spring源代码解析(五):Spring AOP获取Proxy ...

    详解Spring 中如何控制2个bean中的初始化顺序

    本篇文章主要介绍了Spring 中如何控制2个bean中的初始化顺序,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

    Spring中的方法注入

    Spring中的方法注入方式.Spring中的方法注入方式.

    spring.net中文手册在线版

    Spring.NET是一个应用程序框架,其目的是协助开发人员创建企业级的.NET应用程序。它提供了很多方面的功能,比如依赖注入、面向方面编程(AOP)、数据访问抽象及ASP.NET扩展等等。Spring.NET以Java版的Spring框架为...

    在非spring注解类中使用spring容器中的bean_普通类中使用yml配置文件中的配置信息

    在非spring注解类中使用spring容器中的bean_普通类中使用yml配置文件中的配置信息,在大数据采集项目中用到的,已经测试过了

    Spring-OSGI 1.0 M3 中文手册

    Spring Dynamic Modules使编写一个部署在OSGI执行环境中的Spring应用变得简单,它能利用OSGI框架提供的服务。Spring的osgi支持也使构建在Spring框架中的OSGI应用开发变得更简单,更高产。对于企业级应用,Spring动态...

    Spring中事务的传播属性详解

    Spring中事务的传播属性详解,Spring中事务的传播属性详解

    Spring.net 中文帮助文档 第二版

    这个版本的帮助文档,修正了第一个版本中部分,连接打不开的问题。 Spring.net 是由Java 版的 Spring框架得来的,虽然说不是很流行,但是还是值行学习的。 软件格式:CHM

    精通Spring MVC 4

    , 在精通Spring MVC4中,我们将会从头开始构建一个有用的Web应用。本书共计10章,分别介绍了快速搭建Spring Web应用、精通MVC结构、URL映射、文件上传与错误处理、创建Restful应用、保护应用、单元测试与验收测试、...

    Spring中文帮助文档

    6.8.1. 在Spring中使用AspectJ进行domain object的依赖注入 6.8.2. Spring中其他的AspectJ切面 6.8.3. 使用Spring IoC来配置AspectJ的切面 6.8.4. 在Spring应用中使用AspectJ加载时织入(LTW) 6.9. 更多资源 7...

    Spring Framework API文档

    它是一个基于IOC和AOP的构架多层j2ee系统的框架,但它不强迫你必须在每一层中必须使用Spring,因为它模块化的很好,允许你根据自己的需要选择使用它的某一个模块;它实现了很优雅的MVC,对不同的数据访问技术提供了...

    spring4.x中的jar包下载,spring4.0.6下载,spring最新稳定版jar包下载

    spring4.x中的jar包下载,spring4.0.6下载,spring最新稳定版jar包下载 http://maven.springframework.org/release/org/springframework/spring/ 这个链接中有各种稳定版的jar包下载 目前官网上大部分都要maven下载

    Spring 中文开发手册.pdf

    Spring 中文开发手册.pdf,Spring 中文开发手册.pdf

Global site tag (gtag.js) - Google Analytics