标签:
本文章摘编、转载需要注明来源 http://blog.csdn.net/shadowsick/article/details/8878448 我们很多项目中业务都需要涉及到多个数据源,最简单的做法就是直接在java代码里面lookup需要的数据源,但是这样的做法很明显耦合度太高了, 而且当逻辑流程不够严谨的时候就会出现各种大家不愿意看到的问题,由于我们现在的大多项目已经离不开spring了,spring也提供各种强大的功能, 很明显这种动态数据源功能也包括在内,具体实现类请看org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource 这里我演示下如何使用spring提供的动态数据源 先写个接口,default设置为null是因为当程序里没有找到相关联的源就会调用默认源 [java] view plaincopyprint? 01./** 02. * 数据源切换接口 03. * 04. * @author shadow 05. * @create 2013.04.03 06. */ 07.public interface DataSourceEntry { 08. 09. // 默认数据源 10. public final static String DEFAULT_SOURCE = null; 11. 12. /** 13. * 还原数据源 14. * 15. * @param joinPoint 16. */ 17. public void restore(JoinPoint join); 18. 19. /** 20. * 设置数据源 21. * 22. * @param dataSource 23. */ 24. public void set(String source); 25. 26. /** 27. * 获取数据源 28. * 29. * @return String 30. */ 31. public String get(); 32. 33. /** 34. * 清空数据源 35. */ 36. public void clear(); 37.} /** * 数据源切换接口 * * @author shadow * @create 2013.04.03 */ public interface DataSourceEntry { // 默认数据源 public final static String DEFAULT_SOURCE = null; /** * 还原数据源 * * @param joinPoint */ public void restore(JoinPoint join); /** * 设置数据源 * * @param dataSource */ public void set(String source); /** * 获取数据源 * * @return String */ public String get(); /** * 清空数据源 */ public void clear(); } 然后写个实现类,从当前线程里取出对应的数据源名 [java] view plaincopyprint? 01./** 02. * 数据源切换实现类类 03. * 04. * @author shadow 05. * @create 2013.04.03 06. */ 07.public class DataSourceEntryImpl implements DynamicTypeEntry { 08. 09. private final static ThreadLocal标签:
原文地址:http://www.cnblogs.com/zengda/p/4500684.html