У меня есть приложение springboot
, которое использует следующие версии:
SpringBoot: 2.3.1
SpringCloud: Hoxton.SR5
SpringData: Neumann-SR1
Я использовал пользовательский класс, как описано здесь (ответ от @Arun): Настройка Spring Cloud Vault Config для загрузки из расположения, отличного от /secret
Кажется, он даже не собирает конфигурации хранилища. У меня есть bootstrap.yml
со следующим:
spring:
cloud:
# Vault configurations
vault:
generic:
enabled: false
uri: https://${URI}
authentication: TOKEN
token: ${VAULT_TOKEN}
config:
discovery:
enabled: true
Я пытаюсь поднять его локально, поэтому у меня есть application.yml
следующим образом:
spring:
datasource:
url: jdbc:postgresql://localhost:8157/postgres
Здесь я пытаюсь ввести значения из vault
в свой источник данных:
@Profile(value = {"local", "dev", "stg", "prd"})
@Configuration
public class DatabaseConfig {
@Autowired
DatabaseCredentials config;
@Bean
@Primary
public DataSource dataSource() {
return DataSourceBuilder
.create()
.username(config.getUsername())
.url(config.getUrl())
.password(config.getPassword())
.driverClassName("org.postgresql.Driver")
.build();
}
}
Когда приложение запускается, оно DatabaseCredentials
пусто.
Другой способ, которым я это сделал, выглядит следующим образом:
public class DatabaseConfig {
@Value("${ccm.database.username}")
String username;
@Value("${ccm.database.password}")
String password;
@Value("${spring.datasource.url}")
String url;
@Bean
@Primary
public DataSource dataSource() {
return DataSourceBuilder
.create()
.username(username)
.url(url)
.password(password)
.driverClassName("org.postgresql.Driver")
.build();
}
}
Это также оказалось пустым, заявив, что не может найти значение для ccm.database.username
.
Что я делаю не так?
VaultConfigurer
, как определено в упомянутом сообщении SO, вместо того, чтобы определять его в начальной загрузке. в итоге определил бэкэндkv
. - person Dany   schedule 10.07.2020