Skip to content

关于动态配置读取 #4714

Open
Open
@Aithosa

Description

@Aithosa

我注意到3.x版本把原本完全使用archaius API读取配置的部分全部换掉了,在DynamicPropertiesImpl中通过Environment来读取配置,这是为什么,为了更接入Spring原生的操作吗?

然后我按照文档在程序中读取配置信息试了下,使用dynamicProperties.getStringProperty()无法读到配置的变化,然后我看了下[servicecomb-java-chassis](https://github.com/apache/servicecomb-java-chassis)的测试:

    HashMap<String, Object> updated = new HashMap<>();
    updated.put(stringPropertyName, newValue);
    EventManager.post(ConfigurationChangedEvent.createIncremental(updated));

运行没有问题,但是按照文档那样以非mock的方式测试就读不到配置的变化,请问是有什么遗漏的额外配置吗?

我测试时用的是基于开发第一个微服务应用bmi 那个示例改写的。

@RestSchema(schemaId = "ProviderController")
@RequestMapping(path = "/provider")
public class ProviderController {
    private DynamicProperties dynamicProperties;

    @Autowired
    private Environment environment;

    private String example;

    @Autowired
    public ProviderController(DynamicProperties dynamicProperties) {
        this.dynamicProperties = dynamicProperties;
        // 在构造函数中注册回调,这样配置变化时会自动更新 example 值
        this.example = this.dynamicProperties.getStringProperty("basic.example",
                value -> {
                    System.out.println("Configuration changed, new value: " + value);
                    this.example = value;
                }, "not set");
    }

    @GetMapping(path = "/example")
    public String getExampleValue() {
        String dynamicValue = dynamicProperties.getStringProperty("basic.example", "not set");
        String envValue = environment.getProperty("basic.example", "not set");
        System.out.println("Dynamic value: " + dynamicValue);
        System.out.println("Environment value: " + envValue);
        return example;
    }
}

不管是用 dynamicProperties 还是 environment 都读不到变化。

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions