alibaba / spring-context-support

An internal support project for spring-context in Alibaba
Apache License 2.0
150 stars 83 forks source link

ConfigurationBeanBindingPostProcessor无法对serialization-name类型的配置进行驼峰转换并注入属性 #49

Open huangfusuper opened 2 years ago

huangfusuper commented 2 years ago

版本为:1.0.10

使用方式:

  1. application.properties的配置如下:
    envoy.protocol.id=huangfu3
    envoy.protocol.port=22123
    envoy.protocol.serialization-name=123
  2. 对应的实体类如下:

    /**
     * 协议名称
     */
    private String protocolName = ProtocolNameEnum.NETTY.getName();
    
    /**
     * 序列化名称
     */
    private String serializationName = SerializationNameEnum.FAST_JSON.getName();

    已经使用 @EnableConfigurationBeanBinding 进行绑定该实体类

但是上述配置无法注入 serialization-name 属性,当属性转变为 serializationName 注入成功

期望

spring 中默认会使用驼峰转换的方式,当配置中制定为 xx-xx的时候希望能够注入到 xxXx属性中!

现阶段的处理方式

手动实现一个BeanPostProcessor优先级高于 ConfigurationBeanBindingPostProcessor ,自己向BeanDefinition的attribute中增加一个 驼峰转换后的值,最后再经由ConfigurationBeanBindingPostProcessor 完成注入