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论坛(十二)
12.1.图形验证码生成 (1)utils/captcha/init.py import random import string # Image:一个画布 # ImageDraw:一个画笔 # Im ...
- BBS论坛(五)
5.1.cms后台修改密码功能完成 (1)新建app/forms.py # app/forms.py from wtforms import Form class BaseForm(Form): de ...
- 【MongoDb入门】15分钟让你敢说自己会用MongoDB了
一.MongDB是什么呢,我该如何下手呢? MongoDB是一个基于分布式文件存储的数据库.由C++语言编写.旨在为WEB应用提供可扩展的高性能数据存储解决方案. 如果小伙伴你的机器上还没有安装Mon ...
- java基础(一)-----java的三大特性之封装
面向对象编程有三大特性:封装.继承.多态.本文将介绍java的三大特性之封装 封装 封装从字面上来理解就是包装的意思,专业点就是信息隐藏,是指利用抽象数据类型将数据和基于数据的操作封装在一起,使其构成 ...
- 【朝花夕拾】Android编码风格篇
结合51CTO学院中张凌华老师讲的编码风格课程,对自己平时工作中的形成的一些编码风格做一些总结. 一. 项目开发目录命名: Requirement - 需求相关文档 Design - 设计 Plann ...
- HTTP 权威指南 详解 ( 一、概述 )
HTTP 权威指南 详解 ( 一.概述 ) 最近在解读 <http权威指南> 这本书.之前对于http 的理解仅限于 知道我需要向服务端发送一个 get or post 请求,然后等待服务 ...
- docker-compose部署mysql无法访问
docker-compose部署mysql无法访问 这个问题困扰了我很久,当使用docker-compose部署mysql之后,进行容器后,使用mysql -u root -p 是可以访问的,而使用s ...
- Android单个控件占父控件宽度一半且水平居中
前些天,在工作中遇到了一个需求:一个“加载上一页”的按钮宽度为父控件宽度一半,且水平居中于父控件中. 在此给出两种思路: 1.直接在Activity代码中获取到当前父控件的宽度,并将此按钮宽度值设置成 ...
- tcpdump工具使用说明
tcpdump采用命令行方式对接口的数据包进行筛选抓取,其丰富特性表现在灵活的表达式上. 注意,tcpdump只能抓取流经本机的数据包,不带任何选项的tcpdump,默认会抓取第一个网络接口,且只有将 ...
- Jenkins结合.net平台综合应用之通过SSH方式拉取代码
上一节我们讲解了如何Jenkins如何通过轮训来监听git仓库变化然后拉取最新代码,上一节中我们使用的是https方式,然后正式环境中企业更倾向使用ssh方式.这里我们讲解一下如何通在Jenkins中 ...