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