Итак, у меня есть сторонняя библиотека, для которой определен PropertySourcesPlaceholderConfigurer
, например:
@Bean
PropertySourcesPlaceholderConfigurer libraryProperties() {
PropertySourcesPlaceholderConfigurer config = new PropertySourcesPlaceholderConfigurer();
config.setLocations(new Resource[]{new ClassPathResource("library_config.properties")});
config.setPlaceholderPrefix("$library{");
config.setPlaceholderSuffix("}");
config.setIgnoreResourceNotFound(true);
config.setIgnoreUnresolvablePlaceholders(true);
return config;
}
тогда как в моем приложении я просто использую автоконфигурацию Spring Boot 2.1.0 для настройки всего.
Приложение работает нормально, если я удаляю Spring Cloud (клиент), комментируя:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
но как только я добавлю эту зависимость, я получу следующую трассировку стека:
org.springframework.beans.factory.UnsatisfiedDependencyException:
Error creating bean with name 'compositeDiscoveryClient' defined in class path resource [org/springframework/cloud/client/discovery/composite/CompositeDiscoveryClientAutoConfiguration.class]:
Unsatisfied dependency expressed through method 'compositeDiscoveryClient' parameter 0;
nested exception is
org.springframework.beans.factory.UnsatisfiedDependencyException:
Error creating bean with name 'org.springframework.cloud.client.discovery.simple.SimpleDiscoveryClientAutoConfiguration':
Unsatisfied dependency expressed through field 'inet';
nested exception is
org.springframework.beans.factory.UnsatisfiedDependencyException:
Error creating bean with name 'inetUtils' defined in class path resource [org/springframework/cloud/commons/util/UtilAutoConfiguration.class]:
Unsatisfied dependency expressed through method 'inetUtils' parameter 0;
nested exception is
org.springframework.beans.factory.UnsatisfiedDependencyException:
Error creating bean with name 'inetUtilsProperties':
Unsatisfied dependency expressed through field 'timeoutSeconds';
nested exception is
org.springframework.beans.TypeMismatchException:
Failed to convert value of type 'java.lang.String' to required type 'int'; nested exception is java.lang.NumberFormatException: For input string: "${spring.util.timeout.sec:${SPRING_UTIL_TIMEOUT_SEC:1}}"
Который в классе InetUtilsProperties определяется как:
/**
* Timeout, in seconds, for calculating hostname.
*/
@Value("${spring.util.timeout.sec:${SPRING_UTIL_TIMEOUT_SEC:1}}")
private int timeoutSeconds = 1;
Почему @Value
не разрешается с этим PropertySourcesPlaceholderConfigurer
?
Я должен отметить, что до использования этой библиотеки Spring Cloud работал как шарм.
Можете ли вы, ребята, помочь мне здесь?
Заранее спасибо!