Uses RuntimeBeanReference
to prevent the creation of InnerBean
on spring namespace #489
Closed
Description
版本信息
sharding-jdbc:1.5.1
spring-boot: 1.5.9
druid:1.1.6
druid-spring-boot-starter:1.1.6
现象
使用sharding-jdbc的namespace的配置方式时,rdb:sharding-rule里指定的data-sources使用的并不是context里已有的datasource bean,而是自行创建的一个inner datasource bean。
同时翻阅了一下sharding-jdbc 2.0.0里的starter,发现也是会读取配置文件,然后直接自行构建datasource。
问题
- 为何总是独立创建datasource,是有什么特殊考虑么,而不是用context中现有的datasource bean么?
- 另一个问题是兼容性问题,当使用了druid-spring-boot-starter,这个starter里的多数据源配置是基于spring 的FactoryBeanPostProcessor + configurationProperties来实现的,而spring里有个机制是inner bean不执行FactoryBeanPostProcessor,从而导致sharding-jdbc里的inner datasource bean无法正常初始化。