I'm trying to share configuration between Spring Cloud clients with a Spring Cloud config server which have a file-based repository:
@Configuration
@EnableAutoConfiguration
@EnableConfigServer
public class ConfigServerApplication {
public static void main(String[] args) {
SpringApplication.run(ConfigServerApplication.class, args);
}
}
// application.yml
server:
port: 8888
spring:
profiles:
active: native
test:
foo: world
One of my Spring Cloud client use the test.foo
configuration, defined in the config server, and it is configured like below:
@SpringBootApplication
@RestController
public class HelloWorldServiceApplication {
@Value("${test.foo}")
private String foo;
@RequestMapping(path = "/", method = RequestMethod.GET)
@ResponseBody
public String helloWorld() {
return "Hello " + this.foo;
}
public static void main(String[] args) {
SpringApplication.run(HelloWorldServiceApplication.class, args);
}
}
// boostrap.yml
spring:
cloud:
config:
uri: ${SPRING_CONFIG_URI:http://localhost:8888}
fail-fast: true
// application.yml
spring:
application:
name: hello-world-service
Despite this configuration, the Environment
in the Spring Cloud Client doesn't contains the test.foo
entry (cf java.lang.IllegalArgumentException: Could not resolve placeholder 'test.foo'
)
However it's works perfectly if i put the properties in a hello-world-service.yml
file, in my config server file-based repository.
Maven dependencies on Spring Cloud Brixton.M5 and Spring Boot 1.3.3.RELEASE with
spring-cloud-starter-config
andspring-cloud-config-server
application.yml
is. – Dave Syerfile-base repository
because i'm using thenative
spring profile. Theapplication.yml
file is in the local classpath like standard spring boot application – herauserver.port: 8888
. Puttest.foo
inapplication.yml
in the same dir where you puthello-world-service.yml
. – spencergibbhello-world-service.yml
file is in the same dir than theapplication.yml
. I finally found the cause of my issue (see my answer) – herau