DataSourcePoolCreator改动造成spring.shardingsphere.datasource自动提示失效

方便更快捷的说明问题,可以按需填写(可删除)

使用环境:

Windows 22000.493 , IntelliJ IDEA 2021.3.2, Alibaba DragonWell 8u312 , ShardingSphere JDBC 5.1.0

场景、问题:

Use DataSourcePoolCreator instead of DataSourceUtil in spring boot data source creation by terrymanu · Pull Request #15249 · apache/shardingsphere (github.com) , 使用了org.apache.shardingsphere.infra.datasource.pool.creator.DataSourcePoolCreator代替org.apache.shardingsphere.spring.boot.util.DataSourceUtil,并移除了以下json段.

{
  "properties": [
    {
      "name": "spring.shardingsphere.datasource",
      "type": "java.util.Map<java.lang.String,java.util.Map<java.lang.String,java.lang.Object>>",
      "sourceType": "org.apache.shardingsphere.spring.boot.util.DataSourceUtil"
    }
  ]
}

这导致了spring.shardingsphere.datasource下的配置统一报warning,即类似Cannot resolve configuration property 'spring.shardingsphere.datasource.shardingmaster.jdbc-url'

已进行操作:

似乎在引入org.apache.shardingsphere:shardingsphere-jdbc-core-spring-boot-starter:5.1.0的情况下,不能通过在/resources/META-INF/additional-spring-configuration-metadata.json下添加类似的json来解决(如下示例).

{
  "properties": [
    {
      "name": "spring.shardingsphere.datasource",
      "type": "java.util.Map<java.lang.String,java.util.Map<java.lang.String,java.lang.Object>>",
      "sourceType": "org.apache.shardingsphere.infra.datasource.pool.creator.DataSourcePoolCreator"
    }
  ]
}

一个直观的处理方案是将spring.shardingsphere.datasource下的每个数据源的一个个属性逐个添加到/resources/META-INF/additional-spring-configuration-metadata.json,但这样操作在数据源足够多的情况下会导致此文件行数膨胀. 不确定有没有更简单的处理方法.

现状:

如图所示.


你指的是那个自动提示?

就对应区域而言是的. 不过我想指明的其实是那些warning, 自动提示反而不是我的关注点.

方便截图看看, 是哪块的 warning 提示吗?

只是spring.shardingsphere.datasource下的warning,统一为Cannot resolve configuration property 'spring.shardingsphere.datasource.xxx.yyy. 就一楼的 https://community.sphere-ex.com/uploads/default/original/2X/7/7efe1e3240b9552a55b0e4fe46c0b237ef70caee.png

/resources/META-INF/additional-spring-configuration-metadata.json加入如下段落后, 此问题解决.

{
  "properties": [
    {
      "name": "spring.shardingsphere.datasource",
      "type": "java.util.Map<java.lang.String,java.util.Map<java.lang.String,java.lang.Object>>",
      "description": "Description for spring.shardingsphere.datasource."
    }
  ] 
}

似乎master分支的additional-spring-configuration-metadata.json都不需要description, 如果有需要可以简单的传入一个PR.

嗯, 可以增加下提交一个 pr.

此问题在 Eliminate Warning when configuring YAML by linghengqian · Pull Request #15644 · apache/shardingsphere (github.com) 被处理.

京ICP备2021015875号