Spring 4.2.8: пользовательский PropertyPlaceholderConfigurer не работает
После миграции среды Spring на 4.2.8 (начиная с версии 4.1.6) я не могу загрузить конфигурацию через собственный PropertyPlaceholder.
<bean id="customPlaceHolderConfigurer" class="xxx.CustomPlaceHolderConfigurer">
<property name="order" value="#{T(org.springframework.core.Ordered).HIGHEST_PRECEDENCE + 10}" />
<property name="ignoreUnresolvablePlaceholders" value="true" />
</bean>
<jaxws:client id="wsBusinessService" address="${pf:WS_URL}/soap/ws" serviceClass="xxx.WSBusinessService" />
И CustomPlaceholder
public class CustomPlaceHolderConfigurer extends PropertyPlaceholderConfigurer {
private static final Logger LOGGER = LoggerFactory.getLogger(CustomPlaceHolderConfigurer.class);
@Override
protected String resolvePlaceholder(final String pPlaceholder, final Properties pProps) {
String value = null;
if (pPlaceholder != null) {
if (CIStringUtils.startsWith(pPlaceholder, "pf")) {
String propertyKey = StringUtils.substring(pPlaceholder, 3);
if (propertyKey.contains(":")) {
String defaultValue = StringUtils.substringAfter(propertyKey, ":");
String newKey = StringUtils.substringBefore(propertyKey, ":");
value = Plateforme.getProperty(newKey, defaultValue);
} else {
value = Plateforme.getProperty(propertyKey);
}
}
}
LOGGER.debug("placeholder '{}' resolved to '{}'", pPlaceholder, value);
return value;
}
}
Когда я запускаю приложение, я получаю следующий журнал:
2016-12-13T15:52:12,448 [localhost-startStop-2] DEBUG CustomPlaceHolderConfigurer - placeholder 'pf:WS_URL' resolved to 'services.com'
но исключение было сгенерировано jaxws, потому что свойство не было заменено: "Не удалось найти инициатора канала для адреса: ${pf:WS_URL}/soap/ws и транспорта: http://schemas.xmlsoap.org/soap/http "
Я понял, что порядок загрузки конфигурации был изменен на пружину 4.2.x, но я не смог работать, даже изменив порядок. ( https://github.com/spring-projects/spring-framework/wiki/Migrating-to-Spring-Framework-4.x)
Spring Framework 4.2 поставляется с существенной тонкой настройкой обработки класса конфигурации. Там могут быть тонкие различия в порядке регистрации по сравнению с 4.1; однако, они считаются исправлениями поведения, которые не были четко определены ранее. Если вы полагаетесь на определенный порядок, например, для переопределения bean-компонентов по имени, рассмотрите возможность использования новых возможностей 4.2, в частности аннотаций @Order для классов конфигурации.
Я старался:
#{T(org.springframework.core.Ordered).HIGHEST_PRECEDENCE + 10}
#{T(org.springframework.core.Ordered).HIGHEST_PRECEDENCE}
-1
1
Кто-нибудь сталкивался с этой проблемой?
Спасибо