Мы строим несколько микросервисов, используя платформу Spring Cloud. Одна из служб имеет зависимости от некоторых устаревших разделяемых библиотек и импортирует различные XML-файлы для конфигурации компонента. Проблема, с которой мы сталкиваемся, заключается в том, что через этот импорт вводится несколько решателей свойств, и поэтому следующий код в AbstractBeanFactory не может разрешить spring.application.name
, потому что значение приходит как , что первый резольвер не может решить и таким образом устанавливает result
в unknown
. embeddedValueResolver
имеет разрешение, которое может разрешить свойство, но из-за того, что свойство установлено по умолчанию предыдущим распознавателем, у него нет шанса. Это приводит к тому, что регистрация сервиса с Eureka терпит неудачу с NPE.Весна: как разрешить собственность, когда есть несколько ресольверов?
@Override
public String resolveEmbeddedValue(String value) {
String result = value;
for (StringValueResolver resolver : this.embeddedValueResolvers) {
if (result == null) {
return null;
}
result = resolver.resolveStringValue(result);
}
return result;
}