在开发过程中,我们可能会使用到多数据源,比如项目与项目之间的对接(针对自家公司项目,但若是第三方公司,那是万万不通的),又比如数据库的数据量过大时等等。
那么动态多数据源的原理是什么呢?经过一番查阅资料结合实例发现它的原理就是通过Aop的原理在运行时获取对应的数据源,从而达到操作不同的数据库。
1:创建切换数据源的切面类: 切点是指定的自定义注解DataSource,这个注解起到了很重要的作用
该注解的作用是什么呢,就是返回一个值,这个值就是我们指定的哪个数据库类型。
看图一:自定义注解DataSource有四个注解,主要看target注解和Retention注解
target注解:说明注解所修饰的对象范围;可用于类、接口、枚举、Annotation类型等。可以看到该注解有两个值 METHOD和TYPE
METHOD:用于描述方法 ;TYPE:用于描述类、接口,(METHOD在前,type在后,造成了优先级不同)
优先级:先方法,后类,如果方法覆盖了类上的数据源类型,以方法的为准。
Retention注解:该注解标识注解销毁时机,由图二看到它的值为RUNTIME运行时注解,很容易明白所标识的注解在运行时也存在,而我们需要动态获取数据源信息,所以DataSource注解必须在运行时存在
其实到这就已经很明白了,多数据源的使用原理,就不多说了。整理的有点乱,欢迎大家来指出其中不足,共同学习进步