请上传网站应用水印图片,建设初级中学网站,h5教程,原创网站设计费用说起动态数据源#xff0c;大家应该也不陌生。例如在读写分离系统中#xff0c;则要对请求中的读写操作进行分离#xff0c;让读和写落在不同的数据库上#xff1b;例如在多租户系统中#xff0c;则要根据请求来源租户的不同#xff0c;让其落在不同租户的数据库上#…说起动态数据源大家应该也不陌生。例如在读写分离系统中则要对请求中的读写操作进行分离让读和写落在不同的数据库上例如在多租户系统中则要根据请求来源租户的不同让其落在不同租户的数据库上例如在分库应用中也要根据不同的规则让请求落在不同的数据库上。于是我们的应用要根据请求的不同操作不同的数据库这时就需要动态数据源的帮助。DynamicDataSource就是一个出色的动态数据源他能让你在程序运行过程中动态增删和切换数据源。而且它十分易用。使用它在一个请求中查询多个数据源变得无比简单。1 特点DynamicDataSource具有以下特点小巧只实现最基本的数据源增删、切换功能不涉及相关业务。易用只需要简单的配置和几个方法的调用便可以完成所有功能。兼容增加数据源时数据源信息可以来自配置文件、前端界面输入、数据库查询等各种方式。无侵入切换数据源操作可以由切面触发、逻辑触发、注解触发等均可以供开发者自由实现。DynamicDataSource中常用的方法有boolean addDataSource(DataSourceInfo dataSourceInfo, Boolean overwrite)增加一个数据源overwrite用来决定如果已经存在同名数据源时是否要覆盖boolean addAndSwitchDataSource(DataSourceInfo dataSourceInfo, Boolean overwrite)增加一个数据源并切换到该数据源overwrite用来决定如果已经存在同名数据源时是否要覆盖boolean switchDataSource(String dataSourceName)切换到指定名称的数据源boolean delDataSource(String dataSourceName)删除一个数据源void switchDefaultDataSource()切换到默认的数据源DataSource getDefaultDataSource()获取默认数据源以上方法都是多线程安全的。你可以在切面、操作逻辑、注解中调用以上方法完成数据源的动态增删与切换。2 快速上手在demo文件夹下提供一个示例项目供大家快速上手。以该demo项目为例我们介绍DynamicDataSource的使用。2.1 引入依赖包在POM文件中引入DynamicDataSource的jar包。2.2 基本配置在application.properties文件中写入默认的数据源信息下面为示例。可按照自己的数据源进行修改。禁止Spring对DataSourceAutoConfiguration类的加载否则该类会去加载固定的数据源。SpringBootApplication(exclude {DataSourceAutoConfiguration.class}) 增加对DynamicDataSource所在包的Bean的扫描。ComponentScan(basePackages {com.github.yeecode.dynamicdatasource,{other_package_root}}) 2.3 开始使用至此使用DynamicDataSource所需的全部配置就完成了。使用下面方式注入DynamicDataSource后便可以调用其中的数据源操作方法。Autowired
private DynamicDataSource dynamicDataSource; 我们可以按照demosqlDDL.md文件所述建立两个数据源然后测试DynamicDataSource的工作情况。启动DynamicDataSourceDemo项目得到如下界面。例如我们可以在一个接口内实现数据源的切换从而在请求到达/接口时先后查询了两个数据源中的数据如代码所示。可以得到下图所示的结果。下图打印的两行语句分别来自两个数据源。数据源新增、删除、切换操作可以在切面中、业务逻辑中、注解中等各处进行触发。DynamicDataSource不做任何限制交由开发人员按照实际需要实现。3 总结怎么样DynamicDataSource的使用是不是非常简单。通过Maven仓库直接下载依赖并且还有Demo项目指导瞬间上手。从此动态数据源的切换So Easy实属架构师、程序员秘笈收藏起来日后用。其具体接口可能在日后升级中变动请以最新版本的README文档为准。项目地址如下https://github.com/yeecode/DynamicDataSourcegithub.com