当前位置: 首页 > 知识库问答 >
问题:

如何将非字符串值(枚举/类)分配给Application.Properties?

阙庆
2023-03-14

我正在我的项目中使用AWS,我只想使区域在属性文件中可配置

因此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]:找不到匹配的编辑器或转换策略

共有1个答案

葛泳
2023-03-14

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

aws.s3.config.region: US_WEST_2

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

 类似资料:
  • 例如,我如何做类似的事情: 结果示例:

  • 问题内容: 我觉得这是一个简单的问题,但是我尝试过的所有事情都不适合我。我有一个枚举,我有字符串构造函数的原因是因为Java不允许枚举为数字..我在没有字符串构造函数的情况下直接尝试了AA,AB,2C,但这给出了错误。请注意,对于现有的枚举,我要添加C(“ 2C”)。 现在我有一个mybatis映射器,它会进行合并,这是现有的,并且映射器的参数之一是TestEnum。到目前为止,由于枚举值和字符串

  • 我有一个枚举,我想让这些枚举类型在开关情况下成为字符串。 因此,在上面我硬编码“Mon”,而不是有一种方法,我们可以直接将枚举类型作为字符串。就目前而言,如果我在交换机案例中传递枚举类型,我将获得id 0、1或2,但我需要Mon/Tue/Wed作为字符串

  • 问题内容: 说我有一个枚举 并且我想找到一个字符串的枚举值,例如它将是。这怎么可能呢? 是我需要的方法吗?如果是这样,我将如何使用它? 问题答案: 是的,会给你的。 请注意,该名称必须是精确匹配,包括大小写:与两抛出。 静态方法和是在编译时创建的,不会出现在源代码中。但是,它们确实出现在中。例如,显示两种方法。

  • 问题内容: 我定义了以下枚举 现在的印刷价值是 相反,我想打印枚举的值 要实现此功能可以做些什么? 问题答案: 您正在打印枚举 对象 。如果只想打印该属性,请使用该属性: 请参阅 对枚举成员及其属性 的 编程访问权限 部分 : 如果您有枚举成员并需要其名称或值: 如果只需要提供自定义字符串表示形式,则可以向枚举添加方法: 演示:

  • 将grpc与Node一起使用,对我的查询的响应中的枚举将解析为整数值。但是,当我使用BloomRPC进行相同的查询时,枚举将解析为整数值。 是否有参数或选项可以强制使用Node grpc将这些枚举解析为字符串?