数据源在配置文件中的配置

请点击---》   java架构师项目实战,高并发集群分布式,大数据高可用,视频教程

  1. <pre name="code" class="java"><?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
  4. xmlns:cache="http://www.springframework.org/schema/cache"
  5. xmlns:context="http://www.springframework.org/schema/context"
  6. xmlns:jdbc="http://www.springframework.org/schema/jdbc" xmlns:jee="http://www.springframework.org/schema/jee"
  7. xmlns:jms="http://www.springframework.org/schema/jms" xmlns:lang="http://www.springframework.org/schema/lang"
  8. xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:oxm="http://www.springframework.org/schema/oxm"
  9. xmlns:p="http://www.springframework.org/schema/p" xmlns:task="http://www.springframework.org/schema/task"
  10. xmlns:tx="http://www.springframework.org/schema/tx" xmlns:util="http://www.springframework.org/schema/util"
  11. xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
  12. http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd
  13. http://www.springframework.org/schema/cache http://www.springframework.org/schema/cache/spring-cache-3.1.xsd
  14. http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd
  15. http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-3.1.xsd
  16. http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.1.xsd
  17. http://www.springframework.org/schema/jms http://www.springframework.org/schema/jms/spring-jms-3.1.xsd
  18. http://www.springframework.org/schema/lang http://www.springframework.org/schema/lang/spring-lang-3.1.xsd
  19. http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd
  20. http://www.springframework.org/schema/oxm http://www.springframework.org/schema/oxm/spring-oxm-3.1.xsd
  21. http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.1.xsd
  22. http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsd
  23. http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.1.xsd">
  24. <context:annotation-config />
  25. <context:component-scan base-package="com"></context:component-scan>
  26. <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
  27. <property name="locations">
  28. <list>
  29. <value>classpath:com/resource/config.properties</value>
  30. </list>
  31. </property>
  32. </bean>
  33. <bean id="dataSourceOne" class="com.mchange.v2.c3p0.ComboPooledDataSource"
  34. destroy-method="close">
  35. <property name="driverClass" value="${dbOne.jdbc.driverClass}" />
  36. <property name="jdbcUrl" value="${dbOne.jdbc.url}" />
  37. <property name="user" value="${dbOne.jdbc.user}" />
  38. <property name="password" value="${dbOne.jdbc.password}" />
  39. <property name="initialPoolSize" value="${dbOne.jdbc.initialPoolSize}" />
  40. <property name="minPoolSize" value="${dbOne.jdbc.minPoolSize}" />
  41. <property name="maxPoolSize" value="${dbOne.jdbc.maxPoolSize}" />
  42. </bean>
  43. <bean id="dataSourceTwo" class="com.mchange.v2.c3p0.ComboPooledDataSource"
  44. destroy-method="close">
  45. <property name="driverClass" value="${dbTwo.jdbc.driverClass}" />
  46. <property name="jdbcUrl" value="${dbTwo.jdbc.url}" />
  47. <property name="user" value="${dbTwo.jdbc.user}" />
  48. <property name="password" value="${dbTwo.jdbc.password}" />
  49. <property name="initialPoolSize" value="${dbTwo.jdbc.initialPoolSize}" />
  50. <property name="minPoolSize" value="${dbTwo.jdbc.minPoolSize}" />
  51. <property name="maxPoolSize" value="${dbTwo.jdbc.maxPoolSize}" />
  52. </bean>
  53. <bean id="dynamicDataSource" class="com.core.DynamicDataSource">
  54. <property name="targetDataSources">
  55. <map key-type="java.lang.String">
  56. <entry value-ref="dataSourceOne" key="dataSourceOne"></entry>
  57. <entry value-ref="dataSourceTwo" key="dataSourceTwo"></entry>
  58. </map>
  59. </property>
  60. <property name="defaultTargetDataSource" ref="dataSourceOne">
  61. </property>
  62. </bean>
  63. <bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
  64. <property name="dataSource" ref="dynamicDataSource" />
  65. <property name="hibernateProperties">
  66. <props>
  67. <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
  68. <prop key="hibernate.current_session_context_class">org.springframework.orm.hibernate4.SpringSessionContext</prop>
  69. <prop key="hibernate.show_sql">false</prop>
  70. <prop key="hibernate.format_sql">true</prop>
  71. <prop key="hbm2ddl.auto">create</prop>
  72. </props>
  73. </property>
  74. <property name="packagesToScan">
  75. <list>
  76. <value>com.po</value>
  77. </list>
  78. </property>
  79. </bean>
  80. <bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
  81. <property name="sessionFactory" ref="sessionFactory" />
  82. </bean>
  83. <aop:config>
  84. <aop:pointcut id="transactionPointCut" expression="execution(* com.dao..*.*(..))" />
  85. <aop:advisor advice-ref="txAdvice" pointcut-ref="transactionPointCut" />
  86. </aop:config>
  87. <tx:advice id="txAdvice" transaction-manager="transactionManager">
  88. <tx:attributes>
  89. <tx:method name="add*" propagation="REQUIRED" />
  90. <tx:method name="save*" propagation="REQUIRED" />
  91. <tx:method name="update*" propagation="REQUIRED" />
  92. <tx:method name="delete*" propagation="REQUIRED" />
  93. <tx:method name="*" read-only="true" />
  94. </tx:attributes>
  95. </tx:advice>
  96. <aop:config>
  97. <aop:aspect id="dataSourceAspect" ref="dataSourceInterceptor">
  98. <aop:pointcut id="daoOne" expression="execution(* com.dao.one.*.*(..))" />
  99. <aop:pointcut id="daoTwo" expression="execution(* com.dao.two.*.*(..))" />
  100. <aop:before pointcut-ref="daoOne" method="setdataSourceOne" />
  101. <aop:before pointcut-ref="daoTwo" method="setdataSourceTwo" />
  102. </aop:aspect>
  103. </aop:config>
  104. </beans>

请点击---》   java架构师项目实战,高并发集群分布式,大数据高可用,视频教程


DynamicDataSource.class

  1. package com.core;
  2. import org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource;
  3. public class DynamicDataSource extends AbstractRoutingDataSource{
  4. @Override
  5. protected Object determineCurrentLookupKey() {
  6. return DatabaseContextHolder.getCustomerType();
  7. }
  8. }

DatabaseContextHolder.class设置数据源的类

  1. package com.core;
  2. public class DatabaseContextHolder {
  3. private static final ThreadLocal<String> contextHolder = new ThreadLocal<String>();
  4. <span style="white-space:pre">    </span>//设置要使用的数据源
  5. public static void setCustomerType(String customerType) {
  6. contextHolder.set(customerType);
  7. }
  8. <span style="white-space:pre">    </span>//获取数据源
  9. public static String getCustomerType() {
  10. return contextHolder.get();
  11. }
  12. <span style="white-space:pre">    </span>//清除数据源,使用默认的数据源
  13. public static void clearCustomerType() {
  14. contextHolder.remove();
  15. }
  16. }

DataSourceInterceptor.class

  1. package com.core;
  2. import org.aspectj.lang.JoinPoint;
  3. import org.springframework.stereotype.Component;
  4. @Component
  5. public class DataSourceInterceptor {
  6. <span style="white-space:pre;"> </span>//数据源1
  7. public static final String SOURCE_PLAN = "dataSourceOne;
  8. //数据源2
  9. public static final String SOURCE_FUND = dataSourceTwo;

}

请点击---》   java架构师项目实战,高并发集群分布式,大数据高可用,视频教程


springMVC数据源

  1. jdbc_driverClassName=com.microsoft.sqlserver.jdbc.SQLServerDriver
  2. dataSourceOne=jdbc:sqlserver://115.29.***.**;DatabaseName=DB_GuiHua

jdbc_username=**jdbc_password=**

  1. dataSourceTwo=jdbc:sqlserver://115.29.***.*;DatabaseName=DB_Fund

Spring MVC会默认有一个数据源,当需要更换数据源时,要在调用事务之前配置

  1. DataSourceContextHolder.setDbType(DataSourceType.SOURCE_FUND);//更换数据源
  1. /**
  2. * @ClassName: DataSourceContextHolder
  3. * @Description: 数据库切换工具类
  4. * @author: wzx
  5. * @date: 2016-07-27 上午10:26:01
  6. */
  7. public class DataSourceContextHolder {
  8. private static final ThreadLocal<String> contextHolder = new ThreadLocal<String>();
  9. public static void setDbType(String dbType) {
  10. contextHolder.set(dbType);
  11. }
  12. public static String getDbType() {
  13. return ((String) contextHolder.get());
  14. }
  15. public static void clearDbType() {
  16. contextHolder.remove();
  17. }
  18. }

请点击---》   java架构师项目实战,高并发集群分布式,大数据高可用,视频教程

SpringMVC配置双数据源,一个java项目同时连接两个数据库的更多相关文章

  1. spring项目配置双数据源读写分离

    我们最早做新项目的时候一直想做数据库的读写分离与主从同步,由于一些原因一直没有去做这个事情,这次我们需要配置双数据源的起因是因为我们做了一个新项目用了另一个数据库,需要把这个数据库的数据显示到原来的后 ...

  2. java学习笔记(一):开始第一个java项目

    这里使用IntelliJ IDEA 来新建第一个java项目 在新建项目向导,你可以选择你的项目支持的技术,你正在做一个普通的Java项目,只需单击下一步. 下一步,新建一个test的项目. 新建一个 ...

  3. 【系列教程1】Gradle入门系列二:第一个Java项目

    这篇教程的主要内容是讲解如何用Gradle编译和打包一个简单的Java项目. 该Java项目只有一个需求:我们的构建脚本必须创建一个可执行的Jar文件,换句话说,我们必须能够使用命令java -jar ...

  4. 作为Java新手,如何才能快速的看透一个Java项目?

    前言 技术学习是一个总结.纠错.触类旁通的过程,而不是单纯重复练习的过程,如果你问一个做过5年以上Java的老码农,他们很多人都会有很强的"搬砖感",这种"搬砖感&quo ...

  5. 初学者如何吃透一个Java项目

    不少初学者朋友在学习Java过程中,会对着视频敲Java项目,其中遇到的BUG还能解决,但就是每次敲完一个项目,就感觉很空虚,项目里面的知识点感觉懂了但又好像没懂 这些朋友应该怎样才能掌握一个项目所用 ...

  6. 在Eclipse中,如何把一个java项目变成web项目

    经常在eclipse中导入web项目时,出现转不了项目类型的问题,导入后就是一个java项目.解决步骤:1.进入项目目录,可看到.project文件,打开.2.找到<natures>... ...

  7. Node.js npm基础安装配置&创建第一个VUE项目

    使用之前,我们先来明白这几个东西是用来干什么的. node.js: 一种javascript的运行环境,能够使得javascript脱离浏览器运行.Node.js的出现,使得前后端使用同一种语言,统一 ...

  8. 一个Web项目中实现多个数据库存储数据并相互切换用过吗?

    最近公司一个项目需要连接多个数据库(A和B)操作,根据不同的业务模块查询不同的数据库,因此需要改造下之前的spring-mybatis.xml配置文件以及jdbc.properties配置文件,项目后 ...

  9. Springboot配置连接两个数据库

    背景: 项目中需要从两个不同的数据库查询数据,之前实现方法是:springboot配置连接一个数据源,另一个使用jdbc代码连接. 为了改进,现在使用SpringBoot配置连接两个数据源 实现效果: ...

随机推荐

  1. 报Cannot change version of project facet Dynamic web module to 2.5 错误

    maven项目老是报这个错误,上网找了很多方法,把Dynamic Web Module的Version改成了2.5,结果还是报错. 后来找到一个方法说在web.xml中,将version改为3.0,就 ...

  2. vue2.0与实战开发

    慕课网实战 百度云 web前端实战: Node.js入门到企业Web开发中的应用 Web前端性能优化 让你的页面飞起来 前端跳槽面试必备技巧 前端JavaScript面试技巧全套 node.JS 线上 ...

  3. listview优化加强版

    import android.content.Context;import android.graphics.Bitmap;import android.graphics.BitmapFactory; ...

  4. 爬起点小说day03

    # 把所有类别的前3页的小说爬取下来 import scrapyfrom scrapy.http import Requestfrom time import sleepfrom qidianNove ...

  5. 代理模式(Proxy)

    代理模式(Proxy) 其实每个模式名称就表明了该模式的作用,代理模式就是多一个代理类出来,替原对象进行一些操作,比如我们在租房子的时候回去找中介,为什么呢?因为你对该地区房屋的信息掌握的不够全面,希 ...

  6. UWP 用Thumb 控件仿制一个可拖动悬浮 Button

    参考了 http://www.cnblogs.com/zhanggaoxing/p/6403430.html,并加以改进. 最终效果::: Thumb 的原生事件 DragStarted,DragDe ...

  7. day7、用户登陆出现-bash-4.1$错误的原因

    有时候在使用用户登陆Linux系统时会出现-bash-4.1$错误,不显示用户名,路径信息. 原因:用户家目录里面与环境变量有关的文件被删除所导致的 .bash_profile .bashrc 这两个 ...

  8. keeplived日志位置指定

    作为一个运维DBA,除了关心数据库的关键指数.还得往架构和底层基础知识多靠拢. 2010年刚工作的时候,那会Cacti监控比較流行吧.可恶的是SNMP会把默认日志写到系统日志文件中面,导致排错时非常受 ...

  9. Django的url使用方法

    利用Django开发站点.能够设计出很优美的url规则,假设url的匹配规则(包括正則表達式)组织得比較好,view的结构就会比較清晰.比較easy维护. 最简单的形式 from django.con ...

  10. 具体解释Java虚拟机类载入

    概述 在Java语言里面,类型的载入.连接和初始化过程都是在程序运行期间完毕的.虚拟机把描写叙述类的数据从Class文件或其他地方载入到内存,并对数据进行校验.转换解析和初始化,终于形成能够被虚拟机直 ...