Open
Description
我注意到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
都读不到变化。
Metadata
Metadata
Assignees
Labels
No labels
Activity