bootstrap.yml configuration not processed anymore with Spring Cloud 2020.0 bootstrap.yml configuration not processed anymore with Spring Cloud 2020.0 spring spring

bootstrap.yml configuration not processed anymore with Spring Cloud 2020.0


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 Propertiesserver:  port: 8081spring:  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>