Я так и не получил ответ о том, почему я должен указывать «каталог», но мне удалось избежать жесткого кодирования и не допустить необходимости указывать каталог в application.properties.
в application.properties:
refdataserver.datasource.catalog=${DB}
Создайте класс с именем Datasource в пакете com.XXX.refdataserver Убедитесь, что у вас есть получатель и установщик для каталога и аннотации @ConfigurationProperties.
@Configuration
@ConfigurationProperties(prefix = "refdataserver.datasource")
@Validated
@Getter
@Setter
@ToString
public class Datasource {
/**
* Must specify the database in applicaton.properties
*/
@NotNull(message = "refdataserver.datasource.catalog is mandatory")
private String catalog;
}
Создание конфигурации владельца свойств с помощью экземпляр источника данных
@Component("serverProps")
@Configuration
@ConfigurationProperties(prefix = "refdataserver")
@Validated
@Getter
@Setter
@ToString
public class RefDataServerProperties {
/** refdataserver.datasource properties */
private Datasource dataSource;
}
Затем в любом классе с помощью autowire вы можете получить каталог через конфигурацию свойств.
@Autowired
private RefDataServerProperties serverProps;
...
serverProps.getDataSource().getCatalog()