4
votes

I want to build a simple microservices app with spring cloud config server. I am using Github repository to store my configuration files. Currently, I have two very simple microservices. One of them is a cloud-config-server which retrieve properties from the remote repo on Github. In the main class of this microservice, I added @EnableConfigServer annotation and I provided a couple of properties in the application.properties file:

spring.application.name=cloud-config-server
server.port=8888

spring.cloud.config.server.git.uri=*Remote repo URI*
spring.cloud.config.server.git.username=*Username*
spring.cloud.config.server.git.password=*Password*
spring.cloud.config.server.git.clone-on-start=true

If I go to http://localhost:8888/cloud-config-server/default everything works well, my spring cloud config server retrieves properties successfully.

In my second microservice, I added bootstrap.properties with 2 properties to connect to the cloud-config-server:

spring.cloud.config.uri=http://localhost:8888
spring.cloud.config.name=cloud-config-server

And I also added this dependency

       <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-config</artifactId>
       </dependency>

Unfortunately, my microservice doesn't retrieve properties from cloud-config-server. When I try to use property via @Value annotation I get an error:

Injection of autowired dependencies failed; nested exception is java.lang.IllegalArgumentException: Could not resolve placeholder 'test.text' in value "${test.text}

I am sure, I didn't make a typo in my property name "test.text".

3
please include versionsspencergibb
Spring boot 2.4.0 and Spring Cloud 2020.0.0-SNAPSHOTdulikkk
The solution was shared in detail here: stackoverflow.com/a/66533416/10791378cjeronimomx

3 Answers

9
votes

I've already solved my problem. Bootstrap.properties file is no longer enabled by default. You can enable it by adding new dependency:

       <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-bootstrap</artifactId>
        </dependency>

or alternatively, you can remove bootstrap.properties file and provide these properties in your application.properties file

spring.config.import=configserver:*URI to your cloud config server*
spring.cloud.config.name=*Your cloud config server name*
0
votes

In Client application.properties you must use not the server name, but client application name

spring.cloud.config.uri=http://localhost:8888
spring.cloud.config.name=applicationname
0
votes
<spring-cloud.version>2020.0.3-SNAPSHOT</spring-cloud.version>

for spring cloud and

<version>2.5.0-SNAPSHOT</version> 

for spring boot.

Also in application.properties file :

spring.config.cloud.uri=htp://localhost:8888
spring.config.import=optional:configserver:htp://localhost:8888

These should solve your problem as it did to mine.