实际开发过程中,可能会遇到需要多数据源的场景,比如项目中之前使用的是单一的Oracle数据源,由于image表的数据量过大,因此需要将该表单独迁移至Corba-Mysql上。
首先,在biz-datasource.xml上新增一项imageDataSource:
<bean id="imageDataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<!-- 驱动不同 -->
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="xxx" />
<property name="username"><value>xxx</value></property>
<property name="password"><value>xxx</value></property>
<property name="maxActive"><value>xxx</value></property>
<property name="initialSize"><value>xxx</value></property>
<property name="maxWait"><value>xxx</value></property>
<property name="maxIdle"><value>xxx</value></property> <!-- 可以和maxActive保持一致 -->
<property name="minIdle"><value>xxx</value></property> <!-- 可以和initialSize保持一致 -->
<property name="removeAbandoned"><value>xxx</value></property>
<property name="removeAbandonedTimeout"><value>xxx</value></property>
<property name="timeBetweenEvictionRunsMillis"><value>xxx</value></property>
<property name="minEvictableIdleTimeMillis"><value>xxx</value></property>
<!-- 注意和oracle设置的参数不同 -->
<property name="connectionProperties"><value>xxx</value></property>
<!-- sql检查配置,在idle空闲线程检查时,检查链接有效性,丢弃无效的链接,实现自动重连-->
<!-- 注意使用cobar时,因为走了F5进行负载,F5默认5分钟会关闭空闲链接,所以需要通过心跳SQL保证数据库链接不被异常关闭 -->
<property name="testWhileIdle"><value>xxx</value></property>
<property name="testOnBorrow"><value>xxx</value></property>
<property name="testOnReturn"><value>xxx</value></property>
<property name="validationQuery"><value>SELECT @@SQL_MODE</value></property>
<property name="numTestsPerEvictionRun"><value>xxx</value></property> <!-- 注意和maxActive保持一致 -->
</bean>
同时,新增sqlmap配置项imageSqlMapClient,指向/ibank/sqlmap-image.xml
<bean id="imageSqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
<property name="configLocation">
<value>/ibank/sqlmap-image.xml</value>
</property>
</bean>
其次,新建sqlmap-image.xml,将原来sqlmap.xml中需要改走mysql的映射文件移到sqlmap-image.xml中,如下:
<sqlMapConfig>
<settings cacheModelsEnabled="true" enhancementEnabled="true" lazyLoadingEnabled="false"
maxRequests="3000" maxSessions="3000" maxTransactions="3000" useStatementNamespaces="false" />
<typeHandler javaType="com.alibaba.ibank.biz.dal.enumeration.FeatureOfferTypeEnum" callback="com.alibaba.ibank.biz.dal.enumeration.FeatureOfferTypeHandler" />
<sqlMap resource="ibank/sqlmap-mapping-ibank-image.xml" />
<sqlMap resource="ibank/sqlmap-mapping-ibank-tmp-image.xml" />
<sqlMap resource="ibank/sqlmap-mapping-ibank-non-operating-image.xml" />
</sqlMapConfig>
最后,修改biz-dao.xml,由于spring默认的SqlMapClientDaoSupport含有名为datasource的property,因此需要修改autowire属性为no,如下:
<bean id="winportImageDAO" parent="baseDAOProxyFactoryBean">
<property name="target">
<bean class="com.alibaba.ibank.biz.dal.cache.CachedWinportImageDAO" autowire="no">
<property name="sqlMapClient" ref="imageSqlMapClient" />
<property name="dataSource" ref="imageDataSource" />
<property name="imageSortCache" ref="imageSortCache" />
<property name="dazzleImageCache" ref="dazzleImageCache" />
</bean>
<!--
更新的时候也负责清imageSort和image的cache
-->
</property>
</bean>
分享到:
相关推荐
同时配置数据源、事务管理器以及iBATIS的相关配置,如SqlSessionFactory。 3. 集成iBATIS:创建Mapper接口和对应的XML配置文件,定义SQL语句。Service层调用DAO层的方法,实现业务逻辑。 4. 整合测试:编写JUnit...
配置数据源(DataSource),这是Spring管理数据库连接的方式。可以使用Apache的DBCP或C3P0等连接池实现,或者使用Spring的AbstractDataSource类。 4. **SqlSessionFactory配置**: 创建SqlSessionFactoryBean,它...
这里,`configLocation`属性指向iBATIS的配置文件,`dataSource`属性引用数据源。 2. 使用SqlMapClientDaoSupport Spring为iBATIS提供了一个抽象基类`SqlMapClientDaoSupport`,用于简化DAO的实现。我们可以创建一...
在Spring中配置数据源通常采用Apache Commons DBCP库中的`BasicDataSource`类。 ```xml ``` - **重要配置项解释**: - `driverClassName`:指定数据库驱动的全限定类名。 - `url`:数据库连接URL。 -...
1. **配置Spring**:创建Spring的配置文件,定义数据源、SqlSessionFactoryBean以及Ibatis的Mapper接口扫描。通过SqlSessionFactoryBean,Spring能够管理SqlSessionFactory的生命周期,并自动装配Mapper接口。 2. *...
2. 配置Spring:定义DataSource、SessionFactory(对于Hibernate)和SqlSessionFactory(对于Ibatis)的bean,配置数据源、事务管理器等。 3. 配置Hibernate:创建Hibernate的实体类,编写对应的映射文件,设置...
2. **iBATIS配置**:设置iBATIS的数据源、SQL映射文件等。 3. **Struts配置**:定义Struts的Action映射、配置拦截器等。 4. **事务管理**:利用Spring的事务管理功能,确保数据的一致性和完整性。 5. **异常处理**:...
- **配置MyBatis**:在MyBatis的配置文件中设置数据源、事务管理器,并映射Mapper接口和XML文件。 - **Mapper接口和XML文件**:创建Mapper接口,对应数据库操作,XML文件中编写具体的SQL语句。 - **Spring的AOP...
BeanFactory负责创建和管理对象,而ApplicationContext则增加了更多企业级服务,如消息源、国际化支持等。 2. **数据访问/集成**:这个模块提供了对各种数据存储方式的支持,如JDBC、ORM(对象关系映射)框架如...