第2.1.10章 WEB系统最佳实践Spring文件配置多数据源
2017-01-05 22:54
555 查看
spring可以配置多个数据源,其实比较简单注意数据源之间的dataSource、transactionManager、sqlSessionFactory的名称不要重复,再者就是注意跟mybatis结合时mapperLocations、basePackage的区分
下面有两个dao的配置文件,在同一个工程中,不同的数据源。
spring-dao.xml
spring-ucs-dao.xml
下面有两个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 Cloud介绍 Part2: Spring Cloud与微服务
- springmvc实现url路由功能
- spring aop 无法代理父类方法 的解决方法
- Spring MVC过滤器-超类 GenericFilterBean
- 一个jar包里的网站
- 一个jar包里的网站之文件上传
- 一个jar包里的网站之返回对媒体类型
- Spring和ThreadLocal
- Spring Boot 开发微服务
- Spring AOP动态代理-切面
- mybatis id 保存UUID
- 使用MVC微信支付返回get_brand_wcpay_request:fail
- Spring整合Quartz(JobDetailBean方式)
- Spring整合Quartz(JobDetailBean方式)
- Mybatis调用PostgreSQL存储过程实现数组入参传递
- java 中Spring task定时任务的深入理解
- 模拟Spring的简单实现
- Spring整合WebSocket应用示例(上)
- Mybatis传递多个参数的解决办法(三种)