Сервер конфигурации Spring-Cloud игнорирует файл свойств конфигурации
Я пытаюсь создать сервер конфигурации Spring Cloud, который считывает данные конфигурации из файла свойств, а не из github. Сервер запускается, но не обслуживает свойства из файла. У меня есть два файла конфигурации в classpapath:
bootstrap.yml
spring:
application:
name: config-server
config-server.properties
foo=bar
когда я иду на URL, который предположительно должен дать мне значение свойства foo:
curl http://localhost:8888/admin/env/foo
Я получаю сообщение об ошибке: "отметка времени":1415298615005,"состояние":404,"ошибка": "не найдено","исключение":"org.springframework.boot.actuate.endpoint.mvc.EnvironmentMvcEndpoint$NoSuchPropertyException","сообщение ":" Нет такого свойства: foo","path":"/admin/env/foo"}
Мне интересно, что я делаю не так? Насколько я понимаю, имя файла свойств должно совпадать с именем сервера, чтобы быть распознанным сервером.
добавление нативного профиля, как предложил spencergibb, не помогло. мое application.properties выглядит так:
server.port=8888
spring.profiles.active=native
spring.config.name=configserver
spring.application.name=configserver
Обратите внимание, что мне пришлось указать порт сервера. Согласно документации Spring Cloud Config Server, сервер конфигурации запускается по умолчанию на порту 8888. В моем случае, однако, если я не укажу порт в моей конфигурации, сервер начинается с 8080.
Файл POM не имеет родителя и одной зависимости:
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
<version>1.0.0.M2</version>
</dependency>
</dependencies>
В приложении нет ничего особенного:
@Configuration
@ComponentScan
@EnableAutoConfiguration
@EnableConfigServer
public class ConfigurationApp {
public static void main(String[] args) {
SpringApplication.run(ConfigurationApp.class, args);
}
}
Файл configserver.properties содержит одну запись: foo=bar
Прежде всего, я всегда получаю ошибку при запуске
2014-11-07 09:35:42.852 ERROR 6972 --- [ main] b.c.PropertySourceBootstrapConfiguration : Could not locate PropertySource: I/O error on GET request for "http://localhost:8888/configserver/default/master":Connection refused: connect; nested exception is java.net.ConnectException: Connection refused: connect
Независимо от того, какую команду я выполняю, я всегда получаю один и тот же ответ от сервера:
{"name":"info","label":"master","propertySources":[{"name":"bootstrap","source":{}},{"name":"applicationConfig: [classpath:/application.properties]","source":{"spring.config.name":"configserver","spring.application.name":"configserver","server.port":"8888","spring.profiles.active":"native"}},{"name":"defaultProperties","source":{"spring.application.name":"bootstrap"}}]}
Я старался:
http://localhost:8888/configserver/env
http://localhost:8888/configserver/env/foo
http://localhost:8888/configserver/info
http://localhost:8888/configserver/beans
http://localhost:8888/configserver/health
Ответ всегда как выше
2 ответа
По умолчанию сервер конфигурации обслуживает свойства из git. Вам нужно будет установить профиль native
с помощью --spring.profiles.active=native
для сервера конфигурации для обслуживания среды Spring. spring.config.name
для сервера конфигурации программно установлено spring.config.name=configserver
поэтому ваш файл свойств должен быть configserver.properties.
Конечная точка "/admin/env" на сервере конфигурации обслуживает только локальную конфигурацию самого сервера. Сервер обычно является обычным приложением Spring Boot, поэтому он получает свою конфигурацию из "application.properties". Если вы хотите получить его из "config-server.properties", вам нужно установить "spring.config.name" или "spring.config.location" (как обычное загрузочное приложение).