我正在重构一些遗留代码,这些遗留代码为其Spring属性使用非常通用的前缀。像这样:
# application.properties
some.property=foobar
我正在重命名该属性以使其更有意义。
# application.properties
libraryX.widget=foobar
到目前为止,我已经为旧值添加了一个ConfigurationProperties
类,并将它们标记为DeprecatedConfigurationProperty
:
@Component
@ConfigurationProperties(prefix = "some")
public class LegacyProperties {
private String property;
@DeprecatedConfigurationProperty(reason = "property has been renamed to libraryX.widget", replacement = "libraryX.widget")
public String getProperty() {
return property;
}
public void setProperty(String property) {
this.property = property;
}
}
问题...
我想使此更改向后兼容。我该如何将旧属性名称透明地映射到新属性名称,以便可以从some.property
检索@Value("${libraryX.setting}")
值?