您的位置:首页 > 编程语言 > Java开发

第2.1.10章 WEB系统最佳实践Spring文件配置多数据源

2017-01-05 22:54 555 查看
spring可以配置多个数据源,其实比较简单注意数据源之间的dataSource、transactionManager、sqlSessionFactory的名称不要重复,再者就是注意跟mybatis结合时mapperLocations、basePackage的区分

下面有两个dao的配置文件,在同一个工程中,不同的数据源。

spring-dao.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"
xmlns:tx="http://www.springframework.org/schema/tx" xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd">
<description>Spring DAO配置</description>

<!-- 数据源配置, 使用druid连接池 -->
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">
<property name="driverClassName" value="${jdbc.driver}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
<!-- 配置监控统计拦截的filters -->
<property name="filters" value="${druid.filters}" />
<property name="connectionProperties" value="${druid.connectionProperties}" />
<!-- 配置初始化大小、最小、最大 -->
<property name="initialSize" value="${druid.initialSize}"/>
<property name="minIdle" value="${druid.minIdle}"/>
<property name="maxActive" value="${druid.maxActive}"/>

<!-- 配置获取连接等待超时的时间 -->
<property name="maxWait" value="${druid.maxWait}"/>
<!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -->
<property name="timeBetweenEvictionRunsMillis" value="${druid.timeBetweenEvictionRunsMillis}" />

<!-- 配置一个连接在池中最小生存的时间,单位是毫秒 -->
<property name="minEvictableIdleTimeMillis" value="${druid.minEvictableIdleTimeMillis}" />

<property name="validationQuery" value="${druid.validationQuery}" />
<property name="testWhileIdle" value="${druid.testWhileIdle}" />
<property name="testOnBorrow" value="${druid.testOnBorrow}" />
<property name="testOnReturn" value="${druid.testOnReturn}" />

<!-- 打开PSCache,并且指定每个连接上PSCache的大小  如果用Oracle,则把poolPreparedStatements配置为true,mysql可以配置为false。-->
<property name="poolPreparedStatements" value="${druid.poolPreparedStatements}" />
<property name="maxPoolPreparedStatementPerConnectionSize" value="${druid.maxPoolPreparedStatementPerConnectionSize}" />
</bean>

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource">
<ref bean="dataSource" />
</property>
<property name="mapperLocations" value="classpath*:com/dzmsoft/fofeasy/**/mapping/*.xml" />
<property name="plugins">
<list>
<bean
class="com.github.miemiedev.mybatis.paginator.OffsetLimitInterceptor">
<property name="dialectClass"
value="com.github.miemiedev.
4000
mybatis.paginator.dialect.MySQLDialect"></property>
</bean>
</list>
</property>
</bean>
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property>
<property name="basePackage" value="com.dzmsoft.fofeasy.**.dao" />
</bean>

<!--数据连接事务 -->
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>

<!--连接事务的注解配置 -->
<tx:annotation-driven transaction-manager="transactionManager" />

</beans>


spring-ucs-dao.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"
xmlns:tx="http://www.springframework.org/schema/tx" xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd">
<description>Spring DAO配置</description>

<!-- 数据源配置, 使用druid连接池 -->
<bean id="ucsDataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">
<property name="driverClassName" value="${ucs.jdbc.driver}" />
<property name="url" value="${ucs.jdbc.url}" />
<property name="username" value="${ucs.jdbc.username}" />
<property name="password" value="${ucs.jdbc.password}" />
<!-- 配置监控统计拦截的filters -->
<property name="filters" value="${ucs.druid.filters}" />
<property name="connectionProperties" value="${ucs.druid.connectionProperties}" />
<!-- 配置初始化大小、最小、最大 -->
<property name="initialSize" value="${ucs.druid.initialSize}"/>
<property name="minIdle" value="${ucs.druid.minIdle}"/>
<property name="maxActive" value="${ucs.druid.maxActive}"/>

<!-- 配置获取连接等待超时的时间 -->
<property name="maxWait" value="${ucs.druid.maxWait}"/>
<!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -->
<property name="timeBetweenEvictionRunsMillis" value="${ucs.druid.timeBetweenEvictionRunsMillis}" />

<!-- 配置一个连接在池中最小生存的时间,单位是毫秒 -->
<property name="minEvictableIdleTimeMillis" value="${ucs.druid.minEvictableIdleTimeMillis}" />

<property name="validationQuery" value="${ucs.druid.validationQuery}" />
<property name="testWhileIdle" value="${ucs.druid.testWhileIdle}" />
<property name="testOnBorrow" value="${ucs.druid.testOnBorrow}" />
<property name="testOnReturn" value="${ucs.druid.testOnReturn}" />

<!-- 打开PSCache,并且指定每个连接上PSCache的大小  如果用Oracle,则把poolPreparedStatements配置为true,mysql可以配置为false。-->
<property name="poolPreparedStatements" value="${ucs.druid.poolPreparedStatements}" />
<property name="maxPoolPreparedStatementPerConnectionSize" value="${ucs.druid.maxPoolPreparedStatementPerConnectionSize}" />
</bean>

<bean id="ucsSqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource">
<ref bean="ucsDataSource" />
</property>
<property name="mapperLocations">
<list>
<value>classpath*:com/dzmsoft/ucs/**/mapping/*.xml</value>
<value>classpath*:com/dzmsoft/ccs/**/mapping/*.xml</value>
</list>
</property>
<property name="plugins">
<list>
<bean
class="com.github.miemiedev.mybatis.paginator.OffsetLimitInterceptor">
<property name="dialectClass"
value="com.github.miemiedev.mybatis.paginator.dialect.MySQLDialect"></property>
</bean>
</list>
</property>
</bean>
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="sqlSessionFactoryBeanName" value="ucsSqlSessionFactory"></property>
<property name="basePackage" value="com.dzmsoft.ucs.base.dao,com.dzmsoft.ccs.base.dao" />
</bean>

<!--数据连接事务 -->
<bean id="ucsTransactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="ucsDataSource" />
</bean>

<!--连接事务的注解配置 -->
<tx:annotation-driven transaction-manager="ucsTransactionManager" />

</beans>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  spring mybatis