По умолчанию Spring будет использовать простой / неупакованный ConfigurationPropertySource
вместо более сложного PropertySourcesPlaceholderConfigurer
, который содержит несколько PropertySource
с.
Пример можно найти внутри DataSourceBuilder
самого
private void bind(DataSource result) {
ConfigurationPropertySource source = new MapConfigurationPropertySource(this.properties);
ConfigurationPropertyNameAliases aliases = new ConfigurationPropertyNameAliases();
aliases.addAliases("url", "jdbc-url");
aliases.addAliases("username", "user");
Binder binder = new Binder(source.withAliases(aliases));
binder.bind(ConfigurationPropertyName.EMPTY, Bindable.ofInstance(result));
}
Для этого фрагмента обычно this.properties
заполняется с использованием DataSourceProperties
Bean , который является @ConfigurationProperties
аннотированным классом
@ConfigurationProperties(prefix = "spring.datasource")
public class DataSourceProperties implements BeanClassLoaderAware, InitializingBean {
Дело в том, @ConfigurationProperties
сопоставление 1: 1 с файлом свойств, оно очень самоуверенное.
@Value
другой зверь.
В этом ответе я отвечал на полностью кастомную реализацию.
Вы можете найти это ценным.