`

Spring+Ibatis 访问多个数据源

阅读更多

有的时候,我在一个工程中需要访问两个以上的数据源,尤其是在系统集成的时候,以下是我在系统集成的时候遇到的情况,我的工程的架构是:spring2.0+ibatis2.0+struts1.2. 数据库是oracle数据库,
而需要集成的系统是sql server数据库,对方没有提供接口,要求直接操作sql server库。以下是spring配置文件中配置了两个数据源,包括service事务。实际上要把applicationContext.xml中的dao部分
独立到daoContext.xml文件中,为了节省篇幅,就放到了一起。

jdbc.properties文件内容如下:
jdbc2.driverClassName=net.sourceforge.jtds.jdbc.Driver
jdbc2.url=jdbc:jtds:sqlserver://10.101.122.9:1433/testdb;charset=gb2312
jdbc2.username=user1
jdbc2.password=password

jdbc.driverClassName=oracle.jdbc.driver.OracleDriver
jdbc.url=jdbc:oracle:thin:@10.101.126.29:1521:DBSERVER
jdbc.username=user1
jdbc.password=password

applicationContext.xml配置文件内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd">
<beans>
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
    <list>
      <value>jdbc.properties</value>
    </list>
</property>
</bean>
<!-- =========================transactionManager========================= -->
<bean id="autoProxyCreator" class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
<property name="beanNames">
    <value>*Service</value>
</property>
<property name="interceptorNames">
    <list>
      <value>transactionInterceptor</value>
       <value>transactionInterceptor2</value>
    </list>
</property>
</bean>

<!-- =========================oracle dataSource========================= -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
   <property name="driverClassName" value="${jdbc.driverClassName}"/>
   <property name="url" value="${jdbc.url}"/>
   <property name="username" value="${jdbc.username}"/>
   <property name="password" value="${jdbc.password}"/>

</bean>
       <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
   <property name="dataSource" ref="dataSource"/>
</bean>
      <bean id="transactionInterceptor" class="org.springframework.transaction.interceptor.TransactionInterceptor">
   <property name="transactionManager" ref="transactionManager"/>
                <property name="transactionAttributes">
                <props>
                <prop key="insert*">PROPAGATION_REQUIRED</prop>
                <prop key="delete*">PROPAGATION_REQUIRED</prop>
                <prop key="update*">PROPAGATION_REQUIRED</prop>
                <prop key="do*">PROPAGATION_REQUIRED</prop>
                 </props>
                </property>
</bean>
<bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
   <property name="configLocation" value="sql-map-config.xml"/>
   <property name="dataSource" ref="dataSource"/>
</bean>
<!-- =========================sqlserver dataSource========================= -->
   <bean id="dataSource2" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
   <property name="driverClassName" value="${jdbc2.driverClassName}"/>
   <property name="url" value="${jdbc2.url}"/>
   <property name="username" value="${jdbc2.username}"/>
   <property name="password" value="${jdbc2.password}"/>
</bean>

    <bean id="transactionManager2" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
   <property name="dataSource" ref="dataSource2"/>
</bean>

<bean id="transactionInterceptor2" class="org.springframework.transaction.interceptor.TransactionInterceptor">
   <property name="transactionManager" ref="transactionManager2"/>
                <property name="transactionAttributes">
                <props>
                <prop key="insert*">PROPAGATION_REQUIRED</prop>
                <prop key="delete*">PROPAGATION_REQUIRED</prop>
                <prop key="update*">PROPAGATION_REQUIRED</prop>
                <prop key="do*">PROPAGATION_REQUIRED</prop>
                 </props>
                </property>
</bean>
   <bean id="sqlMapClient2" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
   <property name="configLocation" value="sql-map-config.xml"/>
   <property name="dataSource" ref="dataSource2"/>
</bean>


   <!-- =========================for example ========================= -->
        <bean id="FirstDAO" class="com.demo.impl.FirstDAOImpl">
   <property name="sqlMapClient" ref="sqlMapClient"/>
</bean>
       <bean id="SecondDAO" class="com.demo.impl.SecondDAOImpl">
   <property name="sqlMapClient" ref="sqlMapClient2"/>
</bean>

   <bean id="FirstService" class="com.demo.impl.FirstServiceImpl">
        <property name="firstDAO" ref="FirstDAO"/>
   </bean>
   <bean id="SecondService" class="com.demo.impl.SecondServiceImpl">
      <property name="secondDAO" ref="SecondDAO"/>
   </bean>
</beans>

分享到:
评论

相关推荐

    maven搭建SpringMVC+spring+ibatis

    在SpringMVC+Spring+Ibatis的架构中,多数据源配置是一项重要特性。这允许应用连接到多个数据库,根据业务需求选择合适的数据库进行操作。在Spring中,可以通过DataSourceRouter或AbstractRoutingDataSource实现动态...

    struts2+spring+Ibatis框架包

    最后,配置iBatis的SqlMapConfig.xml,定义数据源、事务管理器以及Mapper接口。 总的来说,这个"struts2+spring+iBatis框架包"提供了从用户界面到数据库的完整解决方案,简化了开发流程,提高了代码的可维护性和可...

    struts2+spring+ibatis整合项目实例

    `Struts+Spring+Ibatis整合框架搭建配置文档.doc`应该详细阐述了如何配置Spring以管理Struts2的Action和iBatis的数据源及SqlSession。 3. **iBatis**:iBatis是一个SQL映射框架,它将SQL语句与Java代码分离,使得...

    Spring+Webwork+iBatis 组合实例

    这部分配置定义了一个基于C3P0的数据源Bean,通过读取`jdbc.properties`中的属性值来初始化数据库连接。 ```xml &lt;bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean"&gt; `...

    Spring+ibatis 保留ibatis事务的配置

    配置了JNDI数据源之后,接下来就是配置ibatis的`SqlMapClient` Bean,这个Bean负责读取ibatis的配置文件,建立与ibatis之间的桥梁。 ```xml &lt;bean id="sqlMapClient" class="org.springframework.orm.ibatis....

    Spring + Ibatis 与mysql集群集成

    1. **配置MySQL集群**:首先,你需要设置一个MySQL集群,这通常包括多个数据节点、管理节点和SQL节点。数据节点负责存储和处理数据,管理节点用于集群管理和监控,而SQL节点接收并执行SQL查询。确保所有节点之间有...

    struts2+spring3+ibatis项目整合案例

    同时配置数据源、事务管理器以及iBATIS的相关配置,如SqlSessionFactory。 3. 集成iBATIS:创建Mapper接口和对应的XML配置文件,定义SQL语句。Service层调用DAO层的方法,实现业务逻辑。 4. 整合测试:编写JUnit...

    Spring+ibatis的jar包

    4. **数据源(DataSource)**:iBATIS 需要连接到数据库,因此需要配置数据源,可以是 JDBC 数据源或其他连接池实现。 5. **MyBatis**:iBATIS 后续发展为 MyBatis,增加了更多功能,如支持注解、更丰富的动态 SQL ...

    Maven+spring+ struts2+ Ibatis+mysql整合增删改查

    在Spring的配置文件中,设置数据源、事务管理器,并配置Ibatis的相关bean。Struts2的配置文件struts.xml中,定义Action类和结果映射。最后,Ibatis的配置文件sqlMapConfig.xml中,包含SQL映射信息。 总的来说,这个...

    Spring+Struts2+Ibatis整合例子

    1. **配置Spring**:首先,我们需要配置Spring的上下文,包括定义Bean、配置数据源、配置事务管理器以及Struts2和iBatis的插件。 2. **配置Struts2**:接着,设置Struts2的配置文件,定义Action类、结果类型和拦截...

    webwork+spring+ibatis简单实例

    AOP则允许开发者定义横切关注点,如事务管理,跨多个方法执行。此外,Spring还支持数据访问、Web应用、测试等众多模块,包括与WebWork集成的能力。 **iBatis**: iBatis是一个SQL映射框架,它将Java代码与SQL语句...

    Struts1+Spring+iBatis-jar包

    Spring框架是一个全面的后端应用开发框架,它包括依赖注入(DI)、面向切面编程(AOP)、数据访问/集成、Web框架等多个模块。在Struts1中,Spring可以作为IoC容器管理Bean,提供事务管理,以及与其它框架如iBatis的...

    spring+ibatis+struts2+dwr反转

    Spring还提供了对事务管理、数据访问、Web应用以及更多的支持。在本项目中,Spring作为核心框架,用于管理其他组件的生命周期,实现业务逻辑和控制流程的解耦。 2. **iBatis**:iBatis是一个SQL映射框架,它允许...

    Strust2+Spring+ibatis整合开发实例

    4. 集成iBatis:配置SqlMapConfig.xml文件,定义数据源、事务管理器以及SQL映射文件的位置。在Spring配置文件中,配置SqlSessionFactoryBean,并将其与Service层的Bean关联。 5. 编写Action、Service和DAO:Action...

    struts2+spring+ibatis增删改查

    2. **Spring框架**:Spring是一个全面的企业级应用开发框架,它涵盖了依赖注入(DI)、面向切面编程(AOP)、数据访问、事务管理、MVC、Web服务等多个领域。在Struts2+Spring整合中,Spring主要负责业务对象的管理、...

    Struts2+Spring2+iBatis2整合的例子

    Struts2、Spring和iBatis是Java Web开发中三个非常重要的框架,它们分别负责表现层、业务层和数据访问层。将这三个框架整合在一起,可以实现MVC(Model-View-Controller)架构,提高应用的灵活性和可维护性。 **...

    Spring+iBatis+JOTM实现JTA事务

    在分布式系统中,JTA(Java Transaction API)事务管理用于处理跨越多个数据源的事务,如数据库、消息队列等。JOTM(Java Open Transaction Manager)是一个开源的JTA事务管理器,可以在非J2EE环境下提供分布式事务...

    spring+ibatis所需要的jar包

    4. **数据源配置**:iBatis可以配置多种数据源,如单数据源、多数据源等,适应不同场景的需求。 5. **结果映射**:iBatis支持自动将数据库查询结果映射到Java对象,简化了数据转换的过程。 当Spring和iBatis整合时...

Global site tag (gtag.js) - Google Analytics