I am following this link: http://cloud.spring.io/spring-cloud-config/spring-cloud-config.html#_client_side_usage
I tested this again and again and not seeing Spring cloud client is loading configuration from cloud server, please help to see where is the error:
POM:
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
Application:
@Configuration
@EnableAutoConfiguration
@RestController
public class ConfigclientApplication {
@Value("${spring.cloud.config.uri}")
String url;
@Value("${production.host}")
String host;
@RequestMapping("/")
public String home() {
return "Host is => " + this.host ;
}
public static void main(String[] args) {
SpringApplication.run(ConfigclientApplication.class, args);
}
}
bootstrap.properties: spring.cloud.config.uri=http://localhost:8888
{
"name": "spirent",
"profiles": [
"default"
],
"label": "master",
"propertySources": [
{
"name": "classpath:/spirent.yml",
"source": {
"production.host": "server1",
"production.port": 9999,
"production.value1": 12345,
"test.host": "server2.com",
"test.port": 4444,
"test.value": "hello123"
}
}
]
}
now http://localhost:8080/ can not be started at all.
Error creating bean with name 'configclientApplication' It seemed the auto inject of @Value can not find the production.host environment value.
How can I read the configuration in client once loaded from config server?
Thanks for your help.
As Deinum implies, I'd ensure you have the client configured with the parent as spring-cloud-starter-parent and give it a version. Maven plugins provided by spring cloud wont work when you include in your dependencies and remember cloud is a different project than boot. Change it to:
<parent>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-parent</artifactId>
<version>1.0.0.RELEASE</version>
<relativePath /> <!-- lookup parent from repository -->
</parent>
Second, as a new discipline (and likely not your problem here), I'd use the new annotation on your Application instead of @Configuration and @EnableAutoConfiguration
@SpringBootApplication
Third, double check you have @EnableConfigServer on your config server
Fourth, be sure your bootstrap.properties on your client has your spring application name specified:
spring.application.name=spirent
Finally, if you used the spring-cloud-config example project, there is a default user and security password that you have to set in your URI:
http://user:ddf4757e-0077-42e4-b2ad-2ae04340b08c@localhost:8888
Otherwise, try starting from the spring-cloud-config project located here to ensure your config server is setup correctly:
https://github.com/spring-cloud/spring-cloud-config