【问题标题】:load enum map from property file with spring boot使用spring boot从属性文件加载枚举映射
【发布时间】:2021-09-23 08:11:36
【问题描述】:

在 Spring Boot 中有没有办法加载属性文件并转换为 Map> 其中 Enum 是单个属性名称的最后一部分?这里是一个例子:

com.example.TEST={'A':'10','B':'100'}
com.example.TEST2={'NAME':'TESTNAME','SURNAME':'TESTSURNAME'}
com.example.TEST3={'WHERE':'TESTWHERE','HOW':'TESTHOW'}

在我的配置类中我定义了这个枚举

@Configuration
@PropertySource("classpath:testfile.properties")
@ConfigurationProperties("com.example")
public class ConfigurationTestProperty{
    private Map<Enum,Map<String,String>> map;

    public enum Enum{
       TEST,
       TEST2,
       TEST3
    }
......getter and setters
}

谢谢!

【问题讨论】:

  • 枚举主要是编译时结构。您如何期望这种“转变”发生?你在考虑代码生成吗?这真的感觉很奇怪。当这些枚举应该依赖于属性文件的内容时,您将如何编写使用这些枚举的“客户端”代码?
  • 事实上我问了这个问题是为了知道是否有解决方案或更好的方法来实现我的目标,例如更改属性文件。
  • 创建这个枚举只是为了更好的连贯性。但是只删除和管理字符串不是问题,例如 Map 其中第一个键字符串是属性名称的最后一部分。

标签: java spring-boot properties-file


【解决方案1】:

我找到了一个解决方案,包括更改属性文件结构,如下所示:

com.example.TEST.A=10
com.example.TEST.B=100

可能使用 yml 文件会更清楚,但这很完美,我也更改了 ConfigurationProperties 注释,添加前缀参数“com”并命名我的地图 Map> 示例。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-11-17
    • 2019-07-05
    • 1970-01-01
    • 1970-01-01
    • 2017-05-28
    • 1970-01-01
    • 2019-08-01
    • 1970-01-01
    相关资源
    最近更新 更多