【场景】
- 当业务数据量达到了一定程度,DBA 需要合理配置数据库资源。即配置主库的机器高配置,把核心高频的数据放在主库上;把次要的数据放在从库,低配置。
–(引自 https://www.cnblogs.com/Alandre/p/6611813.html 泥瓦匠BYSocket 大神博客) - 实现读写分离(详见
)
【实现步骤(以renren-security为例)】
- 在yml中配置多数据源
注意此处的 first 和 second,后续配置数据源的名称要与此处名称一致。
2.配置多数据源的标志注解@DataSource,其使用方法是在具体进行业务编码的时候,通过@DataSource(name = “first”)来实现数据源的切换,此处的 first 是在 yml 文件中定义的数据库名称。
这里重点介绍下SpringBoot的3个注解:
Java注解之 @Target、@Retention、@Documented简介
另外补充2个注解:
@Inherited注解 功能:允许子类继承父类中的注解。
@interface意思是声明一个注解,方法名对应参数名,返回值类型对应参数类型。
3.编写DynamicDataSource类,该类需要继承AbstractRoutingDataSource,在Spring容器加载的时候,就注册(设置)数据源,其中,AbstractRoutingDataSource重写了determineCurrentLookupKey()方法,该方法从ThreadLocal(当前