ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、视频、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
## 1. 在启动类GisBootApplication注解中,添加排除原生Druid的配置类。 DruidDataSourceAutoConfigure会注入一个DataSourceWrapper,其会在原生的spring.datasource下找url,username,password等。而我们动态数据源的配置路径是变化的。 ![](https://img.kancloud.cn/6e/44/6e4440cbf8f60550a74e1e71ca4b8a73_554x182.png) ## 2. 不支持spring原生事务,不支持spring事务,不支持spring事务,可分别使用,千万不能混用。 不能使用事务@Transactional,否则数据源不会切换,使用的还是第一次加载的数据源;使用@DSTransactional. ## 3. @DS(“slave”) 括号内即是application.yml中配置的数据源名称,不加注解默认是访问主库master,可加在service方法上,也可加在mapper方法上,但强烈不建议同时在service和mapper注解。 (可能会有问题) ![](https://img.kancloud.cn/14/d5/14d575e9d2e934056e98b126d3ec70fa_554x477.png) ## 4. @DS 可以注解在方法上和类上,同时存在方法注解优先于类上注解。 ## 5. 第一次加载数据源之后,第二次、第三次...操作其它数据源,如果数据源不存在,使用的还是第一次加载的数据源。 ## 6. 数据源名称不要包含下划线,否则不能切换。 ## 7. 主数据库建议只执行 INSERT、UPDATE、DELETE 操作。从数据库建议只执行 SELECT 操作。 ## 8. 多库配置,一个库连不上,整个程序都会终止运行,这个问题要如何避免? 当你所配置的多个数据源里面,只要有1个数据源无法访问,整个程序在启动时就会报错终止,不再运行。 3.3.2开始支持懒启动,配置Lazy属性, 只有需要用到连接的时候才初始化连接池。 后果就是如果有问题会一直抛异常。