【问题标题】:How do you assign a non string value (enum/class) to application.properties?如何将非字符串值(枚举/类)分配给 application.properties?
【发布时间】:2020-10-08 00:50:41
【问题描述】:

我在我的项目中使用 AWS,我只想在属性文件中配置 Regions

所以com.amazonaws.regions.Regions 接受像Regions.AP_EAST_1 这样的枚举值。

我尝试在application.properties中分配它:

aws.s3.config.region=com.amazonaws.regions.Regions.US_WEST_2
@Value("${aws.s3.config.region}")
private Regions clientRegion;

这只是行不通。它给了我这个:

java.lang.IllegalStateException:无法将类型 [java.lang.String] 的值转换为所需类型 [com.amazonaws.regions.Regions]:找不到匹配的编辑器或转换策略

【问题讨论】:

    标签: java spring amazon-web-services spring-boot


    【解决方案1】:

    Spring 知道如何映射枚举。只需使用枚举值(不是完全限定的名称):

    aws.s3.config.region: US_WEST_2
    

    还要注意Spring Cloud AWS 是可用的(尽管它可能并不总是最好的选择;它有非常强烈的意见),并且通常最好使用@ConfigurationProperties 或至少使用构造函数注入而不是@987654324 @ 在一个字段上,它具有字段注入的所有缺陷。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-10
      • 1970-01-01
      • 2021-07-24
      • 1970-01-01
      • 1970-01-01
      • 2014-09-20
      • 1970-01-01
      • 2020-08-16
      相关资源
      最近更新 更多