Я использую в своих проектах экстернализацию настроек, чтобы можно было одну и ту же сборку разворачивать на разных стендах (локальный, тестовый, продакшн и т.п.) и применялись соответствующие этому стенду настройки без их хардкода в application.properties.
В случае с настройками подключения к базе данных проблема решилась достаточно легко:
@Bean
@Primary
@ConfigurationProperties( "main.datasource" )
DataSourceProperties dataSourceProperties() {
DataSourceProperties dbProperties = new DataSourceProperties();
DBConfig dbConfig = LocalConfigStore.get( DBConfig.class ); // логика загрузки локального конфига
dbProperties.setUrl( dbConfig.getDataSourceUrl() );
dbProperties.setUsername( dbConfig.getDataSourceUsername() );
dbProperties.setPassword( dbConfig.getDataSourcePassword() );
dbProperties.setDriverClassName( dbProperties.determineDriverClassName() );
return dbProperties;
}
В случае с настройками подключения по API я не могу определиться, какой бин нужно настроить, чтобы можно было программно выставить client_id и secret_key. Возможно ли это?