dynamic-datasource多数据源下的修改
今天在修改一个新的模块的时候发现了新问题,原来的模块都是一个数据源的,而这个模块由于业务的需求,采用了动态数据源的方案。所以传统的修改DruidConfig的方法已经不适用了,因为在多数据源场景下会从spring.datasource.dynamic.datasource配置来获取数据源。
那么在这种情况下应该怎么办呢?大模型给出了答案,只要在配置文件中进行几处修改就可以了。
db-type
首先要在spring.datasource.druid.filter.stat.db-type处修改,修改成postgresql。因为金仓用的是gp,因此写pg就可以了。但是这个是什么意思呢?简单理解就是统计用的,并不影响业务,所以修改是没关系的,如果更详细的可以问ai,我就不水字数了。
再下来是修改spring.datasource.druid.filter.wall.db-type处,也是一样的,这个是安全相关的,用于防止sql注入等等。
这两个默认都是mysql,需要改成pg.
filters
接下来就要修改spring.datasource.dynamic.datasource.xxx.filters这个配置,原来的配置是stat,wall,slf4j,但是就算改了上面的配置,在项目启动的时候依旧会报错,因此将wall移除掉了。并且在同级的db-type也改成了postgresql。问题就解决了,这个具体是什么原因还没有了解清楚,只是暂时这样修改,保证程序可以跑走来。
pagehelper
helper下面的helperDialect,这个从字面上就可以了解是用来做分页的,也需要修改成pg。
总结
然后,重新编译再测试一下发现问题迎刃而解了。总体来讲虽然今天的代码修改量很小接近没有,就是删除了两个druid的配置类,但是还是了解了不少东西。也体会到虽然spring的配置极大的减化了开发代码量,但是因为它的高度整合和抽象的类层次过多,在不是十分了解的情况下排查问题或修改问题都是很困难的,现在有了ai帮手之后,能够极大的提高这部分的排查时间,从某种角度来看也是帮助了spring,解决了他架构上的一些弊端。