java - 将配置属性转换为枚举值

标签 java spring enums

我有一个包含这一行的配置文件:

login.mode=PASSWORD

和一个枚举

public enum LoginMode {
PASSWORD, NOT_PASSWORD, OTHER }

和一个 Spring bean

<bean id="environment" class="a.b.c.Environment" init-method="init">
  <property name="loginMode" value="${login.mode}"/>
</bean>

当然还有bean类

public class Environment {
    private LoginMode loginMode;

    public LoginMode getLoginMode() {
        return loginMode;
    }

    public void setLoginMode(LoginMode loginMode) {
        this.loginMode = loginMode;
    }
}

如何将配置文件的属性(String)转换成LoginMode对应的枚举值?

编辑:我知道如何获取字符串输入的枚举值,但问题是另一个: 如果我试试这个:

public class Environment {
    private LoginMode loginMode;

    public LoginMode getLoginMode() {
        return loginMode;
    }

    public void setLoginMode(String loginMode) {
        this.loginMode = LoginMode.valueOf(loginMode);
    }
}

spring 提示 getter 和 setter 没有相同的输入和输出类型。

Bean property 'loginMode' is not writable or has an invalid setter method. Does the    parameter type of the setter match the return type of the getter?

最佳答案

Spring 自动将输入字符串转换为所需枚举的相应 valueOf。

关于java - 将配置属性转换为枚举值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19678664/

相关文章:

java - Google AppEngine 应用程序的自定义域

java - 执行器服务中的依赖线程 - Java

java - 我可以编写一个 hibernate 实体吗?

java - 组合框条目未显示在框架上

java - 如何在 Hibernate 中使用 REST API 删除多条记录

c# - 为什么 MSDN 声明 HasFlag *设计*用于与 FlagsAttribute 一起使用?

c# - 如何检查枚举是否包含数字?

java - Spring Java 配置用于在 stomp 端点上自定义 Websocket 握手

java - 无法在 IntelliJ IDEA 中导入 javax.validation.constraints

c++ - 正确使用枚举 C++