SpringDataJpa动态修改访问数据库的数据源
SpringDataJpa动态修改访问数据库的数据源
在使用多个数据源的时候,我们有时想要通过访问不同的方法来选择不同的数据源。使用springdatajpa可以通过创建不同的repository来实现,但是多个repository的实现方式不是想要的,这样写起来麻烦,代码重复太多。
抽象类AbstractRoutingDataSource实现
在使用Datasource的体系中,我们可以看到抽象类AbstractRoutingDataSource实现了Datasource接口,而AbstractRoutingDataSource中提供了一个决定数据源的方法,部分源码如下:
看到这里,大概知道怎么实现了吧!话不多说,上代码:
yml配置文件
配置文件中包含两个数据源:
配置类DynamicDataSourceConfig
创建配置类,配置entityManagerFactory和platformTransactionManager,进行数据源的选择
首先是创建两个固定的数据源,其中一个使用primary注解注释,然后再创建动态数据源DynamicDatasource,改数据源继承AbstractRoutingDataSource,这样可以动态决定数据源的使用
配置数据源的Bean
创建Datasource切面类
通过使用自定义注解来选择不同的数据源,在需要使用不同数据源的方法标注
这里没有写service层,所以注解标注在dao层。
https://github.com/lzx0808265x/DynamicJpaDatasource