#spring-boot #spring-cloud #spring-boot-actuator
#spring-загрузка #spring-облако #пружинный загрузочный привод
Вопрос:
У меня есть класс component и pom.xml зависимости, подобные приведенным ниже. Свойства никогда не устанавливаются и остаются равными null.
@Component
@RefreshScope
public class SecurityProperties1 {
@Value("${ad.url}")
public String adUrl;
@Value("${ad.manager.dn}")
public String managerDN;
@Value("${ad.manager.password}")
public String managerPassword;
@Value("${ad.search.base}")
public String searchBase;
@Value("${ad.user.filter}")
public String userFilter;
}
pom.xml
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
<version>1.2.1.RELEASE</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-commons -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-commons</artifactId>
<version>1.1.4.RELEASE</version>
</dependency>
Также,
Мой источник свойств выглядит следующим образом
@Component
public class CustomPropertyPlaceholderConfigurer extends PropertyPlaceholderConfigurer {
@Override
protected String resolvePlaceholder(String placeholder, Properties props) {
return DynamicProperty.getProperty(placeholder);
}
@Override
protected String resolvePlaceholder(String placeholder, Properties props, int systemPropertiesMode) {
return DynamicProperty.getProperty(placeholder);
}
}
Комментарии:
1. Для начала прекратите смешивать версии spring cloud. И ваш пользовательский
PropertyPlaceholderConfigurer
нарушает правильное использование.
Ответ №1:
У меня была такая же проблема. Мое решение: я добавил proxymode = default
аннотацию
@Component
@RefreshScope(proxyMode = DEFAULT)
public class MyClass {
@Value("${test.value}")
private String testValue;
}
Ответ №2:
Для более новой версии, если кто-то сталкивается с этой проблемой :
Убедитесь, что у вас есть зависимость spring-cloud-starter-bootstrap в classpath
и также добавьте spring.application.назовите свойство в вашем файле bootstrap.properties
И прокомментируйте каждый класс, который получает свойство с сервера конфигурации, с помощью @RefreshScope
Комментарии:
1. о боже, это
spring.application.name
действительно загрузочный файл: facepalm: и никаких упоминаний в документации или дайте мне знать2. где вы нашли о сеттере в документах? Я не могу найти