转载:http://lujia35.iteye.com/blog/969466
介绍下mysql数据库读写分离在spring,hibernate框架下的配置。
1.mysql连接配置文件jdbc.properties
master.*.*表示主数据库连接参数,负责增,删,改;
slave.*.*表示从数据库连接参数,只负责读取;
jdbc.properties
- master.jdbc.driverClassName=com.mysql.jdbc.Driver
- master.jdbc.url=********
- master.jdbc.username=********
- master.jdbc.password=********
-
- slave.jdbc.driverClassName=com.mysql.jdbc.Driver
- slave.jdbc.url=********
- slave.jdbc.username=********
- slave.jdbc.password=********
把**改成你所需的连接参数;
2.配置AOP切面类 DataSourceAdvice.java
- import java.lang.reflect.Method;
- import org.springframework.aop.AfterReturningAdvice;
- import org.springframework.aop.MethodBeforeAdvice;
- import org.springframework.aop.ThrowsAdvice;
-
- import com.company.datasource.DataSourceSwitcher;
-
- public class DataSourceAdvice implements MethodBeforeAdvice, AfterReturningAdvice, ThrowsAdvice {
-
- public void before(Method method, Object[] args, Object target) throws Throwable {
- System.out.println("切入点: " + target.getClass().getName() + "类中" + method.getName() + "方法");
- if(method.getName().startsWith("add")
- || method.getName().startsWith("create")
- || method.getName().startsWith("save")
- || method.getName().startsWith("edit")
- || method.getName().startsWith("update")
- || method.getName().startsWith("delete")
- || method.getName().startsWith("remove")){
- System.out.println("切换到: master");
- DataSourceSwitcher.setMaster();
- }
- else {
- System.out.println("切换到: slave");
- DataSourceSwitcher.setSlave();
- }
- }
-
-
- public void afterReturning(Object arg0, Method method, Object[] args, Object target) throws Throwable {
- }
-
-
- public void afterThrowing(Method method, Object[] args, Object target, Exception ex) throws Throwable {
- DataSourceSwitcher.setSlave();
- System.out.println("出现异常,切换到: slave");
- }
-
- }
数据源选择类 DataSourceSwitcher.java
- package com.company.datasource;
- import org.springframework.util.Assert;
-
- public class DataSourceSwitcher {
- @SuppressWarnings("rawtypes")
- private static final ThreadLocal contextHolder = new ThreadLocal();
-
- @SuppressWarnings("unchecked")
- public static void setDataSource(String dataSource) {
- Assert.notNull(dataSource, "dataSource cannot be null");
- contextHolder.set(dataSource);
- }
-
- public static void setMaster(){
- clearDataSource();
- }
-
- public static void setSlave() {
- setDataSource("slave");
- }
-
- public static String getDataSource() {
- return (String) contextHolder.get();
- }
-
- public static void clearDataSource() {
- contextHolder.remove();
- }
- }
DynamicDataSource.java数据源动态切换类
- package com.company.datasource;
-
- import org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource;
-
- public class DynamicDataSource extends AbstractRoutingDataSource {
-
- @Override
- protected Object determineCurrentLookupKey() {
- return DataSourceSwitcher.getDataSource();
- }
-
- }
下面配置spring applicationContext.xml文件 (Spring+Hibernate框架下Mysql读写分离、主从数据库配置(下))
分享到:
相关推荐
实现了Spring+Hibernate+MySql的融合,通过部分修改调整,可以直接运行.本人亲自测试过,总结和不能运行原因已归纳在文件中
基于Struts2+Spring+Hibernate框架,MYSQL数据库的新闻管理系统,IDE: MYECLIPSE
eclipse工具,用Maven搭建的Spring+Spring MVC+Hibernate框架源码
Struts2+Spring+Hibernate+Jsp+Mysql5 项目申报系统.zip
Struts+Spring+Hibernate框架样例+数据库(含增、删、改、查)
spring mvc + spring + hibernate 全注解整合开发视频教程 11
Eclipse+Struts+Spring+Hibernate+Mysql环境搭建及访问数据库实例
纯净的spring+hibernate+mysql,springmvc整合了hibernate框架,使用mysql数据库,简单的实现登录、注册等相应的功能!
struts2+spring+hibernate框架购物车
AJAX实现用户登录注册(Struts+Spring+Hibernate+Ajax框架) AJAX实现用户登录注册(Struts+Spring+Hibernate+Ajax框架) AJAX实现用户登录注册(Struts+Spring+Hibernate+Ajax框架)
Struts2+Spring+Hibernate框架技术与项目实战源码与PDF.3
spring+struts+hibernate框架,内容空
的SSH框架系统,基于Spring+Struts2+Hibernate酒店管理系统,更有可直接导入的Mysql数据库文件,不需要你自己根据建立数据库和数据表,一切都是完美的,只需要你的电脑有Myeclipse和Mysql,项目就可直接跑起来!
SSH是 struts+spring+hibernate的一个集成框架,是目前比较流行的一种Web应用程序开源框架 现在的结构是,Struts负责显示层,Hibernate负责持久层,Spring负责中间的业务层,另外,由于Spring使用的依赖注射以及AOP...
springMVC+spring+Hibernate框架搭建,登录功能
基于Struts2+Spring+Hibernate+MySql的注册登录系统.zip
struts2+spring+hibernate框架jar包
spring+springmvc+mybatis+maven+mysql 数据库读写分离
Struts2+spring+hibernate框架的项目实例,只需要修改数据库连接即可
spring mvc+spring+hibernate+bootstrap+mysql 考勤及薪酬管理系统