Bootstrap.yml Configuration Not Processed Anymore With Spring Cloud 2020.0


Answer :

As pointed put by Nicoll, With Spring Cloud Vault 3.0 and Spring Boot 2.4, the bootstrap context initialization (bootstrap.yml, bootstrap.properties) of property sources was deprecated. This can be fixed in one of the 2 ways

  1. Use Spring Boot 2.4.0 Config Data API to import configuration from Vault (Preferred)
  2. Legacy Processing: Enable the bootstrap context either by setting the configuration property spring.cloud.bootstrap.enabled=true or by including the dependency
<dependency>     <groupId>org.springframework.cloud</groupId>     <artifactId>spring-cloud-starter-bootstrap</artifactId> </dependency> 

1. Use Spring Boot 2.4.0 Config Data API (Preferred)

Move bootstrap.yml configuration to application.yml and updated file looks like below

application.yml

spring:   cloud:     vault:       authentication: APPROLE       app-role:         role-id: ${role-id}         secret-id: ${secret-id}         role: pres-read         app-role-path: approle       uri: ${vault-server}       connection-timeout: 5000       read-timeout: 15000   config:     import: vault://secret/app/pres/ 

And define individual profiles as shown below. Add spring.config.import: vault://secret/app/pres/demo property.

application-demo.yml

## Server Properties server:   port: 8081  spring:   config:     import: vault://secret/app/pres/demo   datasource:     username: ${pres.db.username}     password: ${pres.db.password}     url: ${pres.db.url}     driver-class-name: com.mysql.cj.jdbc.Driver 

Repeat the same process for all profiles like dev, test, qc, staging and prod.

2. Legacy Processing:

Add the following dependency if you still want to use bootstrap.yml

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

to the project. The issue will be resolved.

See Spring Cloud Vault docs for more information


I spent a whole day trying to resolve this issue. For everyone who is following any outdated cloud tutorials:- from springboot 2.4 bootstrap starter dependency has to be added, to follow along the tutorial to use bootstrap.properties (bootstrap.yml) for external configuration.

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

Comments

Popular posts from this blog

Converting A String To Int In Groovy

"Cannot Create Cache Directory /home//.composer/cache/repo/https---packagist.org/, Or Directory Is Not Writable. Proceeding Without Cache"

Android How Can I Convert A String To A Editable