最近工作遇到了关于多数据源的一些问题,所以打算把它记录下来,也给其他遇见相关问题的朋友提供一些帮助
多数据源
常见于分库分表,本质是为了代码的耦合性以及其他一些问题,本质上的实现原理也就是spring的aop进行控制去实现,在每次的相关操作时候去自动切换对应的DataSource,目前采用最多的还是spring注解的方式来进行管理,而普遍会把对应的横切面放在service层去控制,如下图,而这样就会产生一些其他的注意事项
相关配置
因为我用的是spring boot的一个叫做guns & roses的脚手架,而这个模板的作者是把多数据源的配置放进了@DataSource进行管理,所以我还是会根据这个进行相关问题的描述和补充
@Inherited
@Retention(RetentionPolicy.RUNTIME)
@Target({ ElementType.METHOD })
public @interface DataSource {
String name() default "";
}
在项目启动的时候,spring先会对.yml文件进行扫描,然后注册出所有的相关配置bean,在这时候需要在配置文件里面写进对应的数据源驱动
# Mysql数据库
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: ***
username: root