将@ConfigurationProperties应用于列表中的每个元素

时间:2018-10-23 02:29:21

标签: java spring spring-boot

我正在尝试构建应用程序级别的循环机制,以在Spring应用程序的数据源之间轮换。

对于单个数据源,我可以有一个Bean

@ConfigurationProperties(prefix = "spring.datasource")
public DataSource ...

效果很好。

是否可能有类似的东西

@ConfigurationProperties(prefix = "spring.datasource")
public List<DataSource> ...

文件中的配置属性在哪里应用于列表中的每个对象?我将其保留为一个列表,因为数据源的数量可能会随时间变化,并且可能来自配置,例如dynamo DB。 (当然,更改仅会在应用程序重新启动时反映出来,但避免了代码更改)

1 个答案:

答案 0 :(得分:0)

我不确定该解决方案能否解决您的问题。

U可以如下定义java类:

@ConfigurationProperties(prefix = "spring")
public class DataSources {

    private List<DataSource> datasource;

    public static class DataSource {
        private String name;
        private String url;
    }
}

这将映射以下配置

spring:
    datasource[0]:
        name: mysql
    datasource[1]:
        name: mongo
    datasource[2]:
        name: mssql