Spring采用properties配置多个数据库

2023-10-27

在一个项目中有这样的需求:上海和武汉采用不同的系统,每个系统都有自己的数据库,但是在上海的系统需要访问武汉的数据库,这就要在项目中配置两个数据源,下面是我给的SSH采用properties配置数据源的方法。

1.要有两个properties文件
第一个文件是本地数据库文件dataResources.properties
ConnectString=jdbc:mysql://192.168.1.110:3306/tplis?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true
UserID=root
Password=root
JdbcDriverName=com.mysql.jdbc.Driver

第二个文件是武汉数据库文件wuhanDataResources.properties
wuhan.ConnectString=jdbc:mysql://localhost:3306/tplis?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true
wuhan.UserID=root
wuhan.Password=root
wuhan.JdbcDriverName=com.mysql.jdbc.Driver

2.配置dataSource
在appli cationCont ext-database.xml文件中
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">

<bean id="propertyConfigurer"
    class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="locations">
    	<list>
    		<value>/WEB-INF/classes/net/bolue/resources/dataResources.properties</value>
    		<value>/WEB-INF/classes/net/bolue/resources/wuhanDataResources.properties</value>
    	</list>
    </property>
  </bean>

  <bean id="dataSource"
    class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <property name="driverClassName">
      <value>${JdbcDriverName}</value>
    </property>
    <property name="url">
      <value>${ConnectString}</value>
    </property>
    <property name="username">
      <value>${UserID}</value>
    </property>
    <property name="password">
      <value>${Password}</value>
    </property>
  </bean>

 <bean id="transactionManager"
		class="org.springframework.orm.hibernate3.HibernateTransactionManager">
		<property name="sessionFactory">
			<ref bean="sessionFactory" />
		</property>
	</bean>

	<bean id="txProxyTemplate" abstract="true"
		class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
		<property name="transactionManager">
			<ref bean="transactionManager" />
		</property>
		<property name="transactionAttributes">
			<props>
				<prop key="*">PROPAGATION_REQUIRED</prop>
			</props>
		</property>
	</bean>
	
	<bean id="wuhanDataSource"
    class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <property name="driverClassName">
      <value>${wuhan.JdbcDriverName}</value>
    </property>
    <property name="url">
      <value>${wuhan.ConnectString}</value>
    </property>
    <property name="username">
      <value>${wuhan.UserID}</value>
    </property>
    <property name="password">
      <value>${wuhan.Password}</value>
    </property>
  </bean>
</beans>

3.配置sessionFactory
<bean id="sessionFactory"
    class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
    <property name="dataSource"><ref bean="dataSource" /></property>
    <property name="hibernateProperties">
      <props>
        <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
        <prop key="hibernate.show_sql">true</prop>
      </props>
    </property>
    <property name="mappingResources">
      <list>
        <!-- bu -->
        <value>net/bolue/bu/vo/BlBuDriver.hbm.xml</value>
        <value>net/bolue/basic/vo/BlBasicUser.hbm.xml</value>
      </list>
    </property>
  </bean>

<bean id="wuhanSessionFactory"
    class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
    <property name="dataSource"><ref bean="wuhanDataSource" /></property>
    <property name="hibernateProperties">
      <props>
        <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
        <prop key="hibernate.show_sql">true</prop>
      </props>
    </property>
    <property name="mappingResources">
      <list>
        <!-- bu -->
        <value>net/bolue/bu/vo/BlBuDriver.hbm.xml</value>
        <value>net/bolue/basic/vo/BlBasicUser.hbm.xml</value>
      </list>
    </property>
  </bean>

4.在DAO中注入sessionFactory
<bean id="blBuDriverService" parent="txProxyTemplate">
    <property name="target">
      <bean class="net.bolue.bu.service.impl.BlBuDriverServiceImpl">
        <property name="blBuDriverDAO"><ref bean="blBuDriverDAO" /></property>
        <property name="blBuTransDAO"><ref bean="blBuTransDAO" /></property>
        <property name="wuhanBlBuDriverDAO"><ref bean="wuhanBlBuDriverDAO" /></property>
      </bean>
    </property>
  </bean>

<bean id="blBuCustrelateService" parent="txProxyTemplate">
    <property name="target">
      <bean class="net.bolue.bu.service.impl.BlBuCustrelateServiceImpl">
        <property name="blBuCustrelateDAO"><ref bean="blBuCustrelateDAO" /></property>
      </bean>
    </property>
  </bean>

5.在service中使用两个不同的DAO
private BlBuDriverDAO blBuDriverDAO;
private BlBuDriverDAO wuhanBlBuDriverDAO;
http://www.linuxso.com/architecture/8738.html
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Spring采用properties配置多个数据库 的相关文章

随机推荐

  • 【论文阅读-ASE 2020】利用单词重叠信息的代码检索 OCoR: An Overlapping-Aware Code Retriever

    OCoR An Overlapping Aware Code Retriever Conference ASE 2020 Authors 摘要 代码搜索任务是通过给出一段自然语言描述 模型能够找到一系列最相关的代码片段 由此来帮助开发人员重
  • Spring中单例bean注入多例bean的解决方法

    1 问题描述 在项目代码的使用过程 单例对象A中需要注入对象B B对象要求是多例的 我们在对象B上添加注解 Scope prototype 代码运行过程中 发现A中注入的B对象始终是同一个 并没有实现多例的效果 下面展示一些 内联代码片 C
  • 蓝桥云课——跳跃 Python(动态规划)

    题目地址 跳跃 此题是一道比较经典又带有一定难度的动态规划题目 且听我慢慢道来 虽然不一定能讲明白 先输入数据 n m map int input split score for i in range n score append list
  • Activiti6.0学习实践(4)-流程引擎配置一

    在上一节 我们进行了一个hello world 的简单应用搭建 本节继续对activiti的一些重要组件进行更进一步的分析 目录 1 activiti工程骨架 1 2 添加demo类到骨架工程 1 3 创建基于骨架的maven工程 2 流程
  • Leetcode20. 给定字符串,判断括号是否有效,不可用栈

    class Solution public boolean isValid String s int len s length if s length 2 1 s length 0 return false else for int i 0
  • SpringBoot项目——创建菜单与游戏页面

    SpringBoot项目 vue 实现游戏页面 回顾 SpringBoot项目 配置git环境与项目创建 文章目录 SpringBoot项目 vue 实现游戏页面 vue 实现前端页面 Web 一 导航栏功能 PK地图的实现 二 js 控制
  • c3p0连接池和druid连接池的使用

    1 c3p0连接池 没有配置文件的情况下 Test public void T1 throws SQLException PropertyVetoException ComboPooledDataSource cpds new ComboP
  • Keil N01:的软件逻辑分析仪( logic analyzer)使用

    在keil MDK中软件逻辑分析仪很强的功能 可以分析数字信号 模拟化的信号 CPU的总线 UART IIC等一切有输出的管脚 提供调试函数机制 用于产生自定义的信号 如Sin 三角波 澡声信号等 这些都可以定义 以keil里自带的stm3
  • 3.网络爬虫——Requests模块get请求与实战

    Requests模块get请求与实战 requests简介 检查数据 请求数据 保存数据 前言 前两章我们介绍了爬虫和HTML的组成 方便我们后续爬虫学习 今天就教大家怎么去爬取一个网站的源代码 后面学习中就能从源码中找到我们想要的数据 此
  • 中级软件设计师考试(软考中级)考试简介与考试内容分布

    原文链接 中级软件设计师考试 软考中级 考试简介与考试内容分布 文章目录 一 考试简介 1 1 软件设计师考试是什么 1 2 通过软件设计师考试应该具备的技术能力 1 3 软件设计师 中级 资格简介 1 4 什么是评什么是聘 1 5 什么是
  • java 栈----java.util.Stack

    Stack类简介 Stack 类表示后进先出 LIFO 的对象堆栈 它通过五个操作对类 Vector 进行了扩展 Stack类继承自Vector类 允许将向量视为堆栈 它提供了通常的 push 和 pop 操作 以及取堆栈顶点的 peek
  • 软件测试-外国语言和易用性测试

    1 外国语言测试 1 1 使用文字图片有意义 开发软件时 考虑用户的国家和地理位置 使软件适应特定地域特征 照顾到语言 方言 地区习俗和文化的过程称为本地化 测试此类软件称为本地化测试 1 2 翻译问题 文本扩展 将英语翻译成其他语言时 通
  • spring框架整合shiro

    shiro框架 定义 Shiro是apache旗下一个开源框架 它将实现用户身份认证 权限授权 加密 会话管理等功能 组成了一个通用的安全认证框架 既然shiro将安全认证相关的功能抽取出来组成一个框架 使用shiro就可以非常快速的完成认
  • 使用frp工具实现内网穿透以及配置多个ssh和web服务

    frp简介 FRP 项目地址 https github com fatedier frp blob master README zh md frp 是一个可用于内网穿透的高性能的反向代理应用 支持 tcp udp 协议 为 http 和 h
  • qt中的toUtf8, toLatin1, Local8bit, toUcs4

    1 首先说下字符集 gb18030字符集兼容了gbk字符集 以两个字节表示一个文字 windows系统可能使用的就是这两种的一种 unicode字符集以2个或以上的字节表示一个汉字 通用字符集 Universal Character Set
  • Windows操作系统安全加固基线检测脚本

    一 背景信息 在我们的安全运维工作中经常需要进行安全基线配置和检查 所谓的安全基线配置就是系统的最基础的安全配置 安全基线检查涉及操作系统 中间件 数据库 甚至是交换机等网络基础设备的检查 面对如此繁多的检查项 自动化的脚本可以帮助我们快速
  • 树的遍历(bfs+递归)

    题目描述 一个二叉树 树中每个节点的权值互不相同 现在给出它的后序遍历和中序遍历 请你输出它的层序遍历 输入描述 第一行包含整数 N 表示二叉树的节点数 第二行包含 N 个整数 表示二叉树的后序遍历 第三行包含 N个整数 表示二叉树的中序遍
  • Docker容器占用过多C盘空间问题解决方案

    Docker容器占用过多C盘空间问题解决方案 简介 Docker 是一个开源的容器化平台 它能够将应用程序及其依赖项打包成一个独立的 可移植的容器 然而 在使用 Docker 过程中 有时会遇到C盘空间不足的问题 这是因为默认情况下 Doc
  • cpu cache一致性和内存屏障机制

    1 cache 局部性原理 引入 Cache 的理论基础是程序局部性原理 包括时间局部性和空间局部性 即最近被CPU访问的数据 短期内CPU 还要访问 时间 被 CPU 访问的数据附近的数据 CPU 短期内还要访问 空间 因此如果将刚刚访问
  • Spring采用properties配置多个数据库

    在一个项目中有这样的需求 上海和武汉采用不同的系统 每个系统都有自己的数据库 但是在上海的系统需要访问武汉的数据库 这就要在项目中配置两个数据源 下面是我给的SSH采用properties配置数据源的方法 1 要有两个properties文