`
gxhslcww
  • 浏览: 79008 次
  • 性别: Icon_minigender_1
  • 来自: 南通
社区版块
存档分类
最新评论

Spring 配置多个数据源

阅读更多
<?xml version="1.0" encoding="GBK"?>
<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.xsd">
      
<!-- ************************************************************************************************************************* -->
<!-- 定义数据源Bean,使用C3P0数据源实现 -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
  <!-- 指定连接数据库的驱动 -->
  <property name="driverClass" value="com.mysql.jdbc.Driver"/>
  <!-- 指定连接数据库的URL -->
  <property name="jdbcUrl" value="jdbc:mysql://localhost/a0121"/>
  <!-- 指定连接数据库的用户名 -->
  <property name="user" value="a"/>
  <!-- 指定连接数据库的密码 -->
  <property name="password" value="a"/>
  <!-- 指定连接数据库连接池的最大连接数 -->
  <property name="maxPoolSize" value="20"/>
  <!-- 指定连接数据库连接池的最小连接数 -->
  <property name="minPoolSize" value="1"/>
  <!-- 指定连接数据库连接池的初始化连接数 -->
  <property name="initialPoolSize" value="1"/>
  <!-- 指定连接数据库连接池的连接的最大空闲时间 -->
  <property name="maxIdleTime" value="20"/>
</bean>
 
    <!--定义了Hibernate的SessionFactory -->
    <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
        <property name="dataSource" ref="dataSource"/>
        <property name="mappingResources">
            <list>
    <value>/hibernate-map-xml/AripBaseinfoOrg.hbm.xml</value>
    <value>/hibernate-map-xml/Tlorrybaseinfo.hbm.xml</value>
    <value>/hibernate-map-xml/Tlorrypp.hbm.xml</value>
    <value>/hibernate-map-xml/Tlorrysjinfo.hbm.xml</value>
    <value>/hibernate-map-xml/Tlorrystate.hbm.xml</value>
            </list>
        </property>
        <property name="hibernateProperties">
            <props>
                <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
                <prop key="show_sql">true</prop>
                <prop key="hibernate.hbm2ddl.auto">update</prop>
                <prop key="hibernate.jdbc.batch_size">20</prop>
            </props>
        </property>
    </bean>

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


    <bean id="transactionInterceptor" class="org.springframework.transaction.interceptor.TransactionInterceptor">
     <!--  事务拦截器bean需要依赖注入一个事务管理器 -->
        <property name="transactionManager" ref="transactionManager"/>
     <property name="transactionAttributes">
      <!--  下面定义事务传播属性-->
      <props>
       <prop key="get*">PROPAGATION_REQUIRED,readOnly</prop>
       <prop key="*">PROPAGATION_REQUIRED</prop>
      </props>
     </property>
</bean>

<!-- ****************************************************************************************************************************** -->
<!-- 定义连接 GPS 服务器数据库  -->
<bean id="dataSourceGPS" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
  <property name="driverClass"   value="com.microsoft.jdbc.sqlserver.SQLServerDriver"/>
  <property name="jdbcUrl"       value="jdbc:microsoft:sqlserver://111.225.0.21:1433"/>
  <property name="user"         value="wt"/>
  <property name="password"      value="w13"/>
  <property name="maxPoolSize"   value="20"/>
  <property name="minPoolSize"   value="1"/>
  <property name="initialPoolSize"  value="1"/>
  <property name="maxIdleTime"    value="20"/>
</bean>

<!--定义了Hibernate的SessionFactoryGPS -->
    <bean id="sessionFactoryGPS" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
        <property name="dataSource" ref="dataSourceGPS"/>
        <property name="mappingResources">
            <list>
    <value>/hibernate-map-xml/CarGjall.hbm.xml</value>
            </list>
        </property>
        <property name="hibernateProperties">
            <props>
                <prop key="hibernate.dialect">org.hibernate.dialect.SQLServerDialect</prop>
                <prop key="show_sql">true</prop>
                <prop key="hibernate.hbm2ddl.auto">update</prop>
                <prop key="hibernate.jdbc.batch_size">20</prop>
            </props>
        </property>
    </bean>

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


    <bean id="transactionInterceptorGPS" class="org.springframework.transaction.interceptor.TransactionInterceptor">
     <!--  事务拦截器bean需要依赖注入一个事务管理器 -->
        <property name="transactionManager" ref="transactionManagerGPS"/>
     <property name="transactionAttributes">
      <!--  下面定义事务传播属性-->
      <props>
       <prop key="get*">PROPAGATION_REQUIRED,readOnly</prop>
       <prop key="*">PROPAGATION_REQUIRED</prop>
      </props>
     </property>
</bean>

<!--车辆管理 ****************************************************************************************************************************** -->

<!-- 定义了 DAO dtbi  dao  tlorrybaseinfo imp  -->
<bean id="dtbi" class="cn.arip.vm.dao.imp.imp_tlorrybaseinfo">
  <property name="sessionFactory" ref="sessionFactory"/>
</bean>
<!-- 定义了 DAO b_istate  通过id获取状态 ,比如: 机构代码 车辆品牌代码 车辆使用状态 代码  -->
<bean id="b_istate" class="cn.arip.vm.dao.imp.imp_tlorrystate">
  <property name="sessionFactory" ref="sessionFactory"/>
</bean>
<!-- 定义 公共 分页 程序 ********************************************************************************************************* -->
<bean id="pagerService" class="cn.arip.page.PagerService"/>
<!-- GPS管理 ********************************************************************************************************* -->
<bean id="dgps" class="cn.arip.gps.dao.imp.imp_gps">
<property name="sessionFactory" ref="sessionFactoryGPS" />
</bean>

<!-- 司机管理 -->
<bean id="dtsi" class="cn.arip.driver.dao.imp.imp_driver">
  <property name="sessionFactory" ref="sessionFactory"/>
</bean>


</beans>

----------------------------------------------------------------------
----------------------------------------------------------------------
经上面说明,我测试成功了


<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd">

<context:annotation-config/>
<context:component-scan base-package="com.eriching"/>

<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
   <property name="locations">
        <value>classpath:jdbc.properties</value>
    </property>
</bean>

<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
destroy-method="close">
<property name="driverClass" value="${jdbc.driverClass}"/>
   <property name="jdbcUrl" value="${jdbc.jdbcUrl}"/>
    <property name="user" value="${jdbc.user}"/>
    <property name="password" value="${jdbc.password}"/>
<property name="maxPoolSize" value="40" />
<property name="minPoolSize" value="1" />
<property name="initialPoolSize" value="1" />

<!--最大空闲时间,25000秒内未使用则连接被丢弃。若为0则永不丢弃。Default: 0 -->
<property name="maxIdleTime" value="600" />

<!--当连接池中的连接耗尽的时候c3p0一次同时获取的连接数。Default: 3 -->
<property name="acquireIncrement" value="5" />

<!--定义在从数据库获取新连接失败后重复尝试的次数。Default: 30 -->
<property name="acquireRetryAttempts" value="30" />

<!--两次连接中间隔时间,单位毫秒。Default: 1000 -->
<property name="acquireRetryDelay" value="1000" />

<!--连接关闭时默认将所有未提交的操作回滚。Default: false -->
<property name="autoCommitOnClose" value="false" />

<!-- 获取connnection时测试是否有效  -->
<property name="testConnectionOnCheckin" value="true" />

<!--每18000秒检查所有连接池中的空闲连接 -->
<property name="idleConnectionTestPeriod" value="60" />

<!--当连接池用完时客户端调用getConnection()后等待获取新连接的时间,超时后将抛出
SQLException,如设为0则无限期等待。单位毫秒。Default: 0 -->
<property name="checkoutTimeout" value="3000" />
</bean>

<!--定义了Hibernate的SessionFactory -->
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<!-- annotation -->

<!-- packagesToScan -->
<property name="packagesToScan">
<list>
<value>com.gxh.**.model</value>
</list>
</property>


<property name="hibernateProperties">
<props>
<prop key="current_session_context_class">thread</prop>
<prop key="hibernate.query.factory_class">org.hibernate.hql.ast.ASTQueryTranslatorFactory</prop>
<prop key="hibernate.dialect">org.hibernate.dialect.OracleDialect</prop>
<prop key="hibernate.use_outer_join">true</prop>
<prop key="hibernate.show_sql">false</prop>
<prop key="hibernate.jdbc.batch_size">50</prop>
<prop key="hibernate.jdbc.fetch_size">50</prop>
<prop key="hibernate.generate_statistics">true</prop>
<!--  二级缓存EHCache start -->
<prop key="hibernate.cache.user_second_level_cache">true</prop>
<prop key="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider</prop>
<!--  查询缓存  -->
<prop key="hibernate.cache.use_query_cache">false</prop>
<!--  二级缓存EHCache end-->
<prop key="hibernate.hbm2ddl.auto">update</prop>
<prop key="hibernate.connection.characterEncoding">GBK</prop>
<prop key="hibernate.connection.useUnicode">true</prop>
</props>
</property>
</bean>

<!-- 配置事务管理器 -->
<tx:annotation-driven transaction-manager="txManager"/>

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

<bean id="dataSource2" class="com.mchange.v2.c3p0.ComboPooledDataSource"
destroy-method="close">
<property name="driverClass" value="${jdbc.driverClass2}"/>
   <property name="jdbcUrl" value="${jdbc.jdbcUrl2}"/>
    <property name="user" value="${jdbc.user2}"/>
    <property name="password" value="${jdbc.password2}"/>
<property name="maxPoolSize" value="40" />
<property name="minPoolSize" value="1" />
<property name="initialPoolSize" value="1" />

<!--最大空闲时间,25000秒内未使用则连接被丢弃。若为0则永不丢弃。Default: 0 -->
<property name="maxIdleTime" value="25000" />

<!--当连接池中的连接耗尽的时候c3p0一次同时获取的连接数。Default: 3 -->
<property name="acquireIncrement" value="10" />

<!--定义在从数据库获取新连接失败后重复尝试的次数。Default: 30 -->
<property name="acquireRetryAttempts" value="30" />

<!--两次连接中间隔时间,单位毫秒。Default: 1000 -->
<property name="acquireRetryDelay" value="1000" />

<!--连接关闭时默认将所有未提交的操作回滚。Default: false -->
<property name="autoCommitOnClose" value="false" />

<!-- 获取connnection时测试是否有效  -->
<property name="testConnectionOnCheckin" value="true" />

<!--每18000秒检查所有连接池中的空闲连接 -->
<property name="idleConnectionTestPeriod" value="60" />

<!--当连接池用完时客户端调用getConnection()后等待获取新连接的时间,超时后将抛出
SQLException,如设为0则无限期等待。单位毫秒。Default: 0 -->
<property name="checkoutTimeout" value="3000" />
</bean>

<!--定义了Hibernate的SessionFactory -->
<bean id="sessionFactory2"
class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="dataSource" ref="dataSource2" />
<!-- annotation -->


<!-- packagesToScan -->
<property name="packagesToScan">
<list>
<value>com.gxh.**.model</value>
</list>
</property>

<property name="hibernateProperties">
<props>
<prop key="current_session_context_class">thread</prop>
<prop key="hibernate.query.factory_class">org.hibernate.hql.classic.ClassicQueryTranslatorFactory</prop>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
<prop key="hibernate.use_outer_join">true</prop>
<prop key="hibernate.show_sql">false</prop>
<prop key="hibernate.jdbc.batch_size">50</prop>
<prop key="hibernate.jdbc.fetch_size">50</prop>
<prop key="hibernate.generate_statistics">true</prop>
<!--  二级缓存EHCache start -->
<prop key="hibernate.cache.user_second_level_cache">true</prop>
<prop key="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider</prop>
<!--  查询缓存  -->
<prop key="hibernate.cache.use_query_cache">false</prop>
<!--  二级缓存EHCache end-->
<prop key="hibernate.hbm2ddl.auto">update</prop>
<prop key="hibernate.connection.characterEncoding">GBK</prop>
<prop key="hibernate.connection.useUnicode">true</prop>
</props>
</property>
</bean>


<!-- 配置事务管理器 -->
<tx:annotation-driven transaction-manager="txManager2"/>

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



</beans>
分享到:
评论

相关推荐

    Spring配置多个数据源

    Spring框架提供了一种灵活的方式来配置和管理多个数据源,使得这种需求变得简单易行。本文将详细介绍如何在Spring应用中配置多个数据源。 首先,我们来理解数据源(DataSource)的概念。数据源是Java中用于存储...

    Springcloud 多数库 多数据源整合,查询动态切换数据库

    1. **配置多数据源**:Spring Boot提供了DataSourceAutoConfiguration,它允许我们配置多个数据源。每个数据源可以有自己的配置,如JDBC连接池、数据库驱动、URL、用户名和密码等。我们可以使用@...

    spring boot多数据源配置

    在Spring Boot应用中,多数据源配置是一项关键的技术,它允许我们同时管理多个数据库,比如主库和从库,或者不同类型的数据库。本教程将详细阐述如何在Spring Boot项目中实现这一功能,从数据源配置、实体管理到...

    Spring Boot+Jpa多数据源配置Demo(支持不同数据库)

    在Spring Boot中,我们可以通过创建不同的`DataSource` bean来配置多个数据源。每个数据源通常会有一个对应的`JdbcTemplate`或`JpaEntityManagerFactory`。首先,我们需要在`application.yml`或`application....

    spring boot 2多数据源,里面有hibernate和mybatis的多数据源代码

    2. **配置事务管理器**:由于存在多个数据源,我们需要为每个数据源创建一个PlatformTransactionManager。Spring Boot 2支持自动配置,只需添加对应的`@EnableTransactionManagement`和`@Transactional`注解。 3. *...

    spring mvc 配置多数据源

    首先,在项目的`application.properties`文件中配置两个数据源:Oracle和MySQL。 ```properties # Oracle数据源配置 jdbc.driver=oracle.jdbc.OracleDriver jdbc.url=jdbc:oracle:thin:@127.0.0.1:1521:dev jdbc....

    Spring Boot使用spring-data-jpa配置Mysql多数据源

    本教程将详细介绍如何在Spring Boot项目中配置多个数据源,并利用`spring-data-jpa`进行数据操作。 首先,我们需要在`pom.xml`中添加必要的依赖。对于`spring-boot-starter-data-jpa`和MySQL的驱动,你需要如下依赖...

    Spring管理配置多个数据源

    这篇博客主要探讨了如何在Spring中配置和管理多个数据源,以便灵活地处理不同的数据库交互需求。 首先,我们要理解Spring的数据源管理。在Spring中,数据源(DataSource)是用于存储和获取数据库连接的对象。通常,...

    spring 动态多数据源配置代码

    - `DataSourceTransactionManager`:为每个数据源提供事务管理器,确保事务的一致性和隔离性。 4. **配置步骤**: - 首先,定义多个`DataSource`实例,分别对应不同的数据库连接信息。 - 创建`...

    spring整合mybatis多数据源

    当我们需要处理多个数据源时,例如在分布式系统或读写分离的场景下,Spring整合MyBatis的多数据源切换就显得尤为重要。这个"spring整合mybatis多数据源"的示例提供了可运行的代码,帮助开发者理解和实践这一功能。 ...

    Spring+Hibernate多数据源

    当项目涉及到多个数据源时,如业务数据、审计数据分别存储在不同的数据库中,就需要进行多数据源的整合。本示例将探讨如何在Spring和Hibernate环境中实现多数据源的配置与管理。 首先,我们来看标题"Spring+...

    spring1.2 操作多个数据源

    在Spring 1.2框架中,操作多个数据源是一项重要的功能,它允许应用程序根据需求灵活地切换或选择不同的数据源进行数据操作。这在多租户应用、数据隔离或者需要处理来自不同数据库的数据时尤为有用。下面将详细介绍...

    通过Spring Boot配置动态数据源访问多个数据库的实现代码

    Spring Boot配置动态数据源访问多个数据库实现代码详解 通过Spring Boot配置动态数据源访问多个数据库可以实现数据库的动态增删和数量无限的支持,下面将详细介绍该实现代码的知识点。 数据源配置管理 在Spring ...

    spring多数据源

    当配置了多个数据源时,我们需要为每个数据源创建一个DataSourceTransactionManager实例,并在Spring配置文件中指定对应的Data Source。 2. **AbstractRoutingDataSource**:这是一个抽象的数据源类,它可以根据...

    Spring多数据源配置

    Spring多数据源配置,支持mysql、oracle等多个数据源同时存在的情况

    SpringBoot多数据源配置(方式一:配置多个mapper扫描不同的包路径实现多数据源配置).docx

    在Spring Boot项目中,默认情况下通常只需要配置一个数据源,即项目的主数据源。但在某些特定的应用场景下,如需要访问第三方系统的数据库或者处理跨系统的业务逻辑时,单个数据源就显得力不从心了。因此,多数据源...

    spring获取weblogic jndi数据源的两种方式

    在Spring配置文件中,可以通过`org.springframework.jndi.JndiObjectFactoryBean`类来定义一个数据源。例如: ```xml &lt;bean id="sysDB" class="org.springframework.jndi.JndiObjectFactoryBean"&gt; &lt;value&gt;hzsh_...

    SpringBoot-SpringData-多数据源

    在 Spring Boot 的主配置类中,使用 `@ConfigurationProperties` 注解加载两个配置文件,并使用 `@Bean` 注解注册两个数据源。例如: ```java @Configuration @PropertySource("classpath:application-primary....

    SSM(Spring+SpringMVC+MyBatis)多数据源配置框架

    1. **数据源配置**:在Spring配置文件中,我们需要定义多个数据源bean,每个数据源对应一个数据库连接。这可能包括Druid或HikariCP这样的连接池配置。 2. **动态数据源**:Spring的AbstractRoutingDataSource类允许...

Global site tag (gtag.js) - Google Analytics