spring aop实现mysql读写分离(可用于SAE的mysql数据库)
2015-07-04
1166
简介:
spring aop实现mysql读写分离(可用于SAE的mysql数据库)
发表于 2014-3-12 12:46:53 |只看该作者 |倒序浏览
前言:SAE的MySQL数据库提供了主从数据库,我们可以向主数据库写数据,同时从从库里面读取数。
前言:SAE的MySQL数据库提供了主从数据库,我们可以向主数据库写数据,同时从从库里面读取数。如果在程序中不做数据库的读写切换是无法正常使用SAE的MYSQL数据库的,我们可以使用spring的aop功能实现mysql主从数据库的切换 在application-datasource.xml中配置master和slave的数据库配置,通过aop实现切换。aop文件都在附件中
|
<bean id="parentDataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
<property name="minPoolSize" value="5" />
<property name="maxPoolSize" value="10" />
<property name="initialPoolSize" value="5" />
<property name="maxIdleTime" value="30" />
<property name="acquireIncrement" value="5" />
<property name="maxStatements" value="0" />
<property name="idleConnectionTestPeriod" value="18000" />
<property name="acquireRetryAttempts" value="30" />
<property name="breakAfterAcquireFailure" value="false" />
<property name="testConnectionOnCheckin" value="true" />
<property name="testConnectionOnCheckout" value="true" />
<property name="acquireRetryDelay" value="100"/>
</bean>
<!-- 主数据源-->
<bean id="masterDataSource" parent="parentDataSource">
<property name="driverClass" value="${master.jdbc.driverClassName}" />
<property name="jdbcUrl" value="${master.jdbc.url}" />
<property name="user" value="${master.jdbc.username}" />
<property name="password" value="${master.jdbc.password}" />
</bean>
<!-- 从数据源-->
<bean id="slaveDataSource" parent="parentDataSource">
<property name="driverClass" value="${slave.jdbc.driverClassName}" />
<property name="jdbcUrl" value="${slave.jdbc.url}" />
<property name="user" value="${slave.jdbc.username}" />
<property name="password" value="${slave.jdbc.password}" />
</bean>
<!-- 数据源 -->
<bean id="dataSource" class="com.common.aop.DynamicDataSource">
<property name="targetDataSources">
<map key-type="java.lang.String">
<entry key="slave" value-ref="slaveDataSource" />
</map>
</property>
<property name="defaultTargetDataSource" ref="masterDataSource" />
</bean>
<!-- 切换数据源 -->
<bean id="dataSourceAdvice" class="com.common.aop.DataSourceAdvice" />
<aop:config>
<aop:advisor
pointcut="execution(* com..service..impl.*.*(..))"
advice-ref="dataSourceAdvice" />
</aop:config>
DynamicDataSource和DataSourceAdvice的java文件都在附件中附:SAE mysql数据库的配置(应用使用mysql数据库必须先开启mysql服务)用 户 名 : accesskey(应用的accesskey)密 码 : secretkey(应用的secretkey)主库域名 : w.rdc.sae.sina.com.cn从库域名 : r.rdc.sae.sina.com.cn端 口 : 3307数据库名 : app_appname(app_加上应用名称)
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。