spring3:多数据源配置使用
0. properties
####################################mysql###########################################
db.mysql.driverClassName=com.mysql.jdbc.Driver
db.mysql.url=jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=UTF-8
db.mysql.username=test
db.mysql.password=test
####################################postgresql###########################################
db.postgresql.driverClassName=org.postgresql.Driver
db.postgresql.url=jdbc:postgresql://127.0.0.1:5432/test
db.postgresql.username=postgres
db.postgresql.password=hp242g2
1. mysql配置
配置文件:datasources.xml
<bean id="dataSource1" class="com.mysql.jdbc.jdbc2.optional.MysqlDataSource">
<property name="url" value="${db.mysql.url}" />
<property name="user" value="${db.mysql.username}" />
<property name="password" value="${db.mysql.password}" />
</bean>
2. postgresql(postgres)配置
<bean id="dataSourcePostgresql1" class="org.postgresql.ds.PGSimpleDataSource">
<property name="url" value="${db.postgresql.url}" />
<property name="user" value="${db.postgresql.username}" />
<property name="password" value="${db.postgresql.password}" />
<property name="serverName" value="127.0.0.1" />
<property name="portNumber" value="5432" />
<property name="databaseName" value="test" />
</bean>
3. spring配置
<bean id="multipleDataSource" class="org.bighead.common.util.MultipleDataSource">
<property name="defaultTargetDataSource" ref="dataSource1" />
<property name="targetDataSources">
<map key-type="java.lang.String">
<entry key="oracle1" value-ref="dataSource1" />
<entry key="postgresql1" value-ref="dataSourcePostgresql1" />
</map>
</property>
<property name="lenientFallback" value="true"/>
</bean>
4. org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource继承
package org.bighead.common.util;
import org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource;
public class MultipleDataSource extends AbstractRoutingDataSource{
private static final ThreadLocal<String> threadLocal = new InheritableThreadLocal<String>();
@Override
protected Object determineCurrentLookupKey() {
return threadLocal.get();
}
public static void setDataSourceKey(String dataSource) {
threadLocal.set(dataSource);
}
}
5. 应用
package org.bighead.test; import java.sql.Connection;
import java.sql.SQLException; import org.bighead.common.util.MultipleDataSource;
import org.springframework.context.support.AbstractApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext; public class TestTest { public static void main(String[] args) {
String[] configs = {"config/spring-application-datasources.xml"};
AbstractApplicationContext appCont = new ClassPathXmlApplicationContext(configs);
MultipleDataSource multipleDataSource = (MultipleDataSource) appCont.getBean("multipleDataSource");
try {
MultipleDataSource.setDataSourceKey("postgresql1");
Connection connection = multipleDataSource.getConnection(); System.out.println(connection);
} catch (SQLException e) {
e.printStackTrace();
}
}
}
6. 备注
多数据库连接池问题,后续更新
spring3:多数据源配置使用的更多相关文章
- Spring3 整合MyBatis3 配置多数据源 动态选择SqlSessionFactory(转)
1. Spring整合MyBatis切换SqlSessionFactory有两种方法,第一. 继承SqlSessionDaoSupport,重写获取SqlSessionFactory的方法.第二.继承 ...
- SpringSide 3 中的多数据源配置的问题
在SpringSide 3 中,白衣提供的预先配置好的环境非常有利于用户进行快速开发,但是同时也会为扩展带来一些困难.最直接的例子就是关于在项目中使用多个数据源的问题,似乎很难搞.在上一篇中,我探讨了 ...
- JAVA spring hibernate 多数据源配置记录
数据源配置 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http:// ...
- 基于xml的Spring多数据源配置和使用
上一篇讲了<基于注解的Spring多数据源配置和使用>,通过在类或者方法上添加@DataSource注解就可以指定某个数据源.这种方式的优点是控制粒度细,也更灵活. 但是当有些时候项目分模 ...
- mysql连接超时与jndi数据源配置
昨天有运营说添加活动不能用了,我就看了一下后台日志,发现访问数据库是报错: at java.lang.Thread.run(Thread.java:722) Caused by: com.mysql. ...
- 三、oracle数据库成功安装步骤 Oracle数据源配置
安装完Oracle驱动后,如需连接远程Oracle数据库,还需进行数据源配置,类似Windows下的ODBC数据源配置. 运行"开始菜单\Oracle - OraDb11g_home1\ ...
- java连接数据源-读取tomcat数据源配置
读取数据源配置,获取连接 1.配置数据源 D:\apache-tomcat-7.0.70\conf\context.xml <Resource name="jdbc/news" ...
- 【JAVA】Spring 数据源配置整理
在Spring中,不但可以通过JNDI获取应用服务器的数据源,也可以直接在Spring容器中配置数据源,此外,还可以通过代码的方式创建一个数据源,以便进行无依赖的单元测试. 配置数据源 ...
- atitit.spring3 mvc url配置最佳实践
atitit.spring3 mvc url配置最佳实践 1. Url-pattern bp 1 2. 通用星号url pattern的问题 1 3. Other code 1 4. 参考 2 1. ...
- MyBatis多数据源配置(读写分离)
原文:http://blog.csdn.net/isea533/article/details/46815385 MyBatis多数据源配置(读写分离) 首先说明,本文的配置使用的最直接的方式,实际用 ...
随机推荐
- BBS论坛(十三)
13.1点击更换图形验证码 (1)front/signup.html <div class="form-group"> <div class="inpu ...
- Spring Security构建Rest服务-1300-Spring Security OAuth开发APP认证框架之JWT实现单点登录
基于JWT实现SSO 在淘宝( https://www.taobao.com )上点击登录,已经跳到了 https://login.taobao.com,这是又一个服务器.只要在淘宝登录了,就能直接访 ...
- 【干货】Chrome插件(扩展)开发全攻略
写在前面 我花了将近一个多月的时间断断续续写下这篇博文,并精心写下完整demo,写博客的辛苦大家懂的,所以转载务必保留出处.本文所有涉及到的大部分代码均在这个demo里面:https://github ...
- 华为oj之质数因子
题目: 质数因子 热度指数:5143 时间限制:1秒 空间限制:32768K 本题知识点: 排序 题目描述 功能:输入一个正整数,按照从小到大的顺序输出它的所有质数的因子(如180的质数因子为2 2 ...
- RestTemplate的逆袭之路,从发送请求到负载均衡
上篇文章我们详细的介绍了RestTemplate发送请求的问题,熟悉Spring的小伙伴可能会发现:RestTemplate不就是Spring提供的一个发送请求的工具吗?它什么时候具有了实现客户端负载 ...
- Educational Codeforces Round 48 (Rated for Div. 2)——A. Death Note ##
A. Death Note time limit per test 2 seconds memory limit per test 256 megabytes input standard input ...
- VSCode搭建Vue项目
在vscode上搭建一个vue项目---初学总结. 1.假设Vscode.nodejs等已经安装好了. 2.全局安装vue-cli,vue-cli可以帮助我们快速构建Vue项目. 安装命令: npm ...
- webpack无法热加载(__webpack_hmr 502)
最近本地开发项目代码一直无法热加载,于是就抽空想办法解决 我们线上的地址是:https://aitest.ichuanyi.com/ai-admin/#/ 其实ai-admin是线上的一个目录 所以 ...
- 【WCF学习大全】
我的WCF之旅(1):创建一个简单的WCF程序 我的WCF之旅(2):Endpoint Overview 我的WCF之旅(3):在WCF中实现双向通信(Bi-directional Communica ...
- linux添加C#运行环境
linux是不带C#的运行环境的,同样的还有.NET. 有一个叫做Mono的很好用http://www.go-mono.com/,有给docker,而且有环境的选择,要注意. 安好后有给样例的程序,编 ...