作者回复: 如果还有同学对多个数据源、读写分离、分库分表之类的问题感兴趣,请关注答疑课程的内容,我们做了些展开的讨论。
作者回复: Bean简单来讲就是由Spring容器创建并托管的实例。
作者回复: 我没有用过AbstarctRoutingDataSource,看了下例子,它和我们这里说的多数据源还不太一样。打个比方,我的系统同时需要访问交易库和账务库,这时我需要配置两个数据源,它们里面的表也都不一样,SQL也都不同。而AbstarctRoutingDataSource的场景除了我讲到的,还有同时要访问交易00库和交易01库,它们的表应该也都是一样的,SQL啥的都是一样的,只是实际操作的库不一样。
作者回复: 发现大家对多数据源的理解都不太一样,我在后续答疑时统一展开聊聊这个话题吧。
作者回复: 你好,请见置顶回复
作者回复: 如果自己做的话,简单的可以手工搞,但读写分离建议配合中间件或者框架来做,会更好一些,这个我后续展开聊聊吧。
作者回复: 这两注解没关系,别放在一起看,@Bean是说我这个方法的返回值当做一个Bean。而@Resource是说我这个方法的参数要按照名字来注入其他的Bean。如果大家对这些注解有疑惑,我后续补充下。
作者回复: 你理解的多数据源和想在这节里面讲的并不太一样,可以关注下我们的答疑课程
作者回复: 个人习惯,有可能搞混的地方加个注解。byType就一个也没问题,有几个同类型的byName加上更放心。
作者回复: 我们并不是针对完全不懂任何东西的开发者的哈,是有前提的,如果基础知识不太清楚的话,前几课下面有些材料,可以先学习一下,再回来继续后面的课程。
作者回复: 目前多数据源的事务,基本还得靠自己,用最终一致的方式来做,可以了解一下BASE、TCC这些概念
作者回复: DAO层需要根据需要配置不同的DataSource,比如提供不同的JdbcTemplate,它们分别使用不同的DataSource。JPA也可以指定不同的数据源。
作者回复: 不仅是排除掉这个,可以对照下我们Github上的示例
作者回复: 我在其他同学的留言中解释过这个问题了,可以翻一下哈。的确不exclude的是可以的,但明确不使用的东西就从项目依赖中去掉,是个不错的习惯。
作者回复: 你说的情况下,我们并不是做切换,而是从DataSource到事务管理,再到上层O/R Mapping的映射都是分开做的,在Service层的代码里自己选择要调用的Repository。在读写分离和分库分表的情况下使用某些框架和中间件做请求路由,完全独立的两个不同数据库,业务代码自己控制就好了。
作者回复: 我建议你先运行下我们的Demo,看看结果是什么样的,然后对照你的代码,看看代码有什么不同的地方,你应该就能找到原因了。
作者回复: 可以搜索引擎里查一下哈,立马就有答案了