spring-cloud / spring-cloud-vault

Configuration Integration with HashiCorp Vault
http://cloud.spring.io/spring-cloud-vault/
Apache License 2.0
275 stars 152 forks source link

Database Properties after ConfigData API migration #625

Closed andrey-vinel closed 2 years ago

andrey-vinel commented 2 years ago

After we migrate to the new ConfigData API, we faced the problem that we can't use properties from the spring context that declared in the spring.factories file(because the bootstrap mode is off), f.e:

# Bootstrap Configuration
org.springframework.cloud.bootstrap.BootstrapConfiguration=\
org.springframework.cloud.vault.config.databases.VaultConfigDatabaseBootstrapConfiguration

org.springframework.cloud.vault.config.SecretBackendMetadataFactory=\
org.springframework.cloud.vault.config.databases.VaultConfigDatabaseBootstrapConfiguration.DatabaseSecretBackendMetadataFactory

org.springframework.cloud.vault.config.VaultSecretBackendDescriptor=\
org.springframework.cloud.vault.config.databases.VaultCassandraProperties,\
org.springframework.cloud.vault.config.databases.VaultCouchbaseProperties,\
org.springframework.cloud.vault.config.databases.VaultDatabaseProperties,\
org.springframework.cloud.vault.config.databases.VaultElasticsearchProperties,\
org.springframework.cloud.vault.config.databases.VaultMongoProperties,\
org.springframework.cloud.vault.config.databases.VaultMySqlProperties,\
org.springframework.cloud.vault.config.databases.VaultPostgreSqlProperties  

if there is any API to retrieve them from the spring context?

mp911de commented 2 years ago

You're looking for a way to use e.g. VaultCassandraProperties as a bean? If so, then you can either declare @EnableConfigurationProperties(VaultCassandraProperties.class) on one of your config classes or define a @Bean method annotated with @ConfigurationProperties returning VaultCassandraProperties.