spring aop实现mysql读写分离(可用于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_加上应用名称)
2.83 KB, 下载次数: 37