开发者社区> 悟静> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

spring aop实现mysql读写分离(可用于SAE的mysql数据库)

简介: spring aop实现mysql读写分离(可用于SAE的mysql数据库)  发表于 2014-3-12 12:46:53 |只看该作者 |倒序浏览          前言:SAE的MySQL数据库提供了主从数据库,我们可以向主数据库写数据,同时从从库里面读取数。
+关注继续查看

spring aop实现mysql读写分离(可用于SAE的mysql数据库)



 发表于 2014-3-12 12:46:53 |只看该作者 |倒序浏览
         前言: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_加上应用名称)

读写分离配置.rar

2.83 KB, 下载次数: 37



版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
使用代理模式实现Spring AOP的面向切面编程,动态代理的四种增强处理
使用代理模式实现Spring AOP的面向切面编程,动态代理的四种增强处理
0 0
Spring Aop 扫盲
面向切面编程(Aspect-oriented Programming,俗称AOP)提供了一种面向对象编程(Object-oriented Programming,俗称OOP)的补充,面向对象编程最核心的单元是类(class),然而面向切面编程最核心的单元是切面(Aspects)。与面向对象的顺序流程不同,AOP采用的是横向切面的方式,注入与主业务流程无关的功能,例如事务管理和日志管理。
0 0
【Spring专场】「AOP容器」不看源码就带你认识核心流程以及运作原理
【Spring专场】「AOP容器」不看源码就带你认识核心流程以及运作原理
0 0
【Spring的事务与AOP实现原理】
【Spring的事务与AOP实现原理】
0 0
理论:第二章:Spring的AOP和IOC是什么?使用场景有哪些?Spring事务与数据库事务,传播行为,数据库隔离级别
理论:第二章:Spring的AOP和IOC是什么?使用场景有哪些?Spring事务与数据库事务,传播行为,数据库隔离级别
0 0
Spring源码分析之AOP拦截器调用流程
ReflectiveMethodInvocation 贯穿于拦截器链执行的始终,可以说是核心。该类的 proceed 方法用于启动启动拦截器链
0 0
spring aop学习
​1.aop和spring aop的关系? aop是一种思想,spring aop是aop的一种实现。 2.Spring aop和AspectJ的关系? 这两种都是实现aop的
0 0
Spring AOP统一功能处理
这篇文章主要介绍AOP(Aspect Oriented Programming)——面向切面编程的思想,它是对某一类事情的集中处理,也是对OOP(Object Oriented Programming)面向对象编程的补充和完善。
0 0
Spring Boot AOP - 面向切面编程
Spring Boot AOP - 面向切面编程
0 0
Spring AOP使用
Spring AOP使用
0 0
+关注
悟静
从事软件行业近二十年
文章
问答
文章排行榜
最热
最新
相关电子书
更多
电商网站需求分析和架构设计Spring Boot2.6入门
立即下载
云上Docker的Spring Cloud微服务应用实践分享
立即下载
Spring Boot 2.6.0电商网站开发实战
立即下载